gaea集成

This commit is contained in:
cuizhibin 2025-04-25 17:27:42 +08:00
parent 2779278a41
commit d5f162ea20
52 changed files with 5132 additions and 0 deletions

View File

@ -0,0 +1,73 @@
package com.dite.znpt.annotations;
/**
* @author wujinsong
* @date 2021/9/15 3:57 下午
* @description: 查询条件
*/
public enum MatchType {
/**
* filed = value
*/
equal,
/**
* filed > value
*/
gt,
/**
* field >= value
*/
ge,
/**
* field < value
*/
lt,
/**
* field <= value
*/
le,
/**
* field != value
*/
notEqual,
/**
* field like value
*/
like,
/**
* field not like value
*/
notLike,
/**
* field > value
*/
greaterThan,
/**
* field >= value
*/
greaterThanOrEqualTo,
/**
* field < value
*/
lessThan,
/**
* field <= value
*/
lessThanOrEqualTo,
/**
* in
*/
in,
/**
* in for Number
*/
inn,
/**
* field is null
*/
isNull,
/**
* field is not null
*/
isNotNull
}

View File

@ -0,0 +1,27 @@
package com.dite.znpt.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author wujinsong
* @date 2021/9/15 4:31 下午
* @description:
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface QueryCondition {
// 数据库中字段名,默认为空字符串,则Query类中的字段要与数据库中字段一致
String column() default "";
// equal, like, gt, lt...
MatchType func() default MatchType.equal;
// object是否可以为null
boolean nullable() default false;
// 字符串是否可为空
boolean emptyable() default false;
}

View File

@ -0,0 +1,62 @@
package com.dite.znpt.context;
//import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.dite.znpt.domain.vo.PersonnelResp;
import com.dite.znpt.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author wujinsong
* @date 2021/11/20 9:43 上午
* @description: 用户context
*/
public class UserContext {
private final RedisService redisService;
public UserContext(RedisService redisService) {
this.redisService = SpringUtil.getBean(RedisService.class);
}
/**
* @author wujinsong
* @date 2021/11/20 10:02 上午
* @description: 获取当前登录用户信息
* @Param []
* @Return com.gaea.common.vo.common.UserInfo
*/
public static PersonnelResp getUserInfo() {
// try {
// String token = StpUtil.getTokenValue();
// if (!StringUtils.isEmpty(token)) {
// String s = redisTemplate.opsForValue().get(token);
// if (!StringUtils.isEmpty(s)) {
// return JSONObject.parseObject(s, UserInfo.class);
// }
// }
// } catch (Exception e) {
// UserInfo userInfo = new UserInfo();
// userInfo.setUsername(Constants.SYSTEM_USER);
// userInfo.setName(Constants.SYSTEM_USER);
// userInfo.setId(Constants.SYSTEM_USER);
// return userInfo;
// }
PersonnelResp resp = new PersonnelResp();
resp.setRoleType("Builder");
return resp;
}
/**
* 功能描述获取角色编码
*
* @return {@link String }
* @author cuizhibin
* @date 2025/04/25 11:23
**/
public static String getRoleCode() {
return getUserInfo().getRoleType();
}
}

View File

@ -0,0 +1,77 @@
package com.dite.znpt.domain;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dite.znpt.annotations.QueryCondition;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.annotation.AnnotationUtils;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collection;
public class QueryWrapperBuilder {
public static <T> QueryWrapper<T> build(Object queryDTO) {
QueryWrapper<T> wrapper = new QueryWrapper<>();
Field[] fields = ReflectUtil.getFields(queryDTO.getClass());
for (Field field : fields) {
QueryCondition qc = AnnotationUtils.getAnnotation(field, QueryCondition.class);
if (qc == null) continue;
TableField tf = AnnotationUtils.getAnnotation(field, TableField.class);
field.setAccessible(true);
try {
Object value = field.get(queryDTO);
// 获取列名优先 QueryCondition.column -> TableField.value -> 字段名
String column = qc.column();
if (StringUtils.isBlank(column)) {
TableField tableField = field.getAnnotation(TableField.class);
if (tableField != null && StringUtils.isNotBlank(tableField.value())) {
column = tableField.value();
} else {
column = StrUtil.toUnderlineCase(field.getName());
}
}
// null检查
if (value == null && !qc.nullable()) continue;
// empty检查
if (value instanceof String && ((String) value).isEmpty() && !qc.emptyable()) continue;
switch (qc.func()) {
case equal: wrapper.eq(column, value); break;
case notEqual: wrapper.ne(column, value); break;
case like: wrapper.like(column, value); break;
case notLike: wrapper.notLike(column, value); break;
case gt: wrapper.gt(column, value); break;
case ge: wrapper.ge(column, value); break;
case lt: wrapper.lt(column, value); break;
case le: wrapper.le(column, value); break;
case greaterThan: wrapper.gt(column, (Comparable<?>) value); break;
case greaterThanOrEqualTo: wrapper.ge(column, (Comparable<?>) value); break;
case lessThan: wrapper.lt(column, (Comparable<?>) value); break;
case lessThanOrEqualTo: wrapper.le(column, (Comparable<?>) value); break;
case in:
case inn:
if (value instanceof Collection) {
wrapper.in(column, (Collection<?>) value);
} else if (value.getClass().isArray()) {
wrapper.in(column, Arrays.asList((Object[]) value));
}
break;
case isNull: wrapper.isNull(column); break;
case isNotNull: wrapper.isNotNull(column); break;
default: break;
}
} catch (IllegalAccessException ignored) {}
}
return wrapper;
}
}

View File

@ -0,0 +1,35 @@
package com.dite.znpt.domain;
import lombok.Data;
import java.util.Collections;
import java.util.List;
/**
* @author wujinsong
* @date 2021/9/15 10:11 下午
* @description: 巡检数据使用
*/
@Data
@Deprecated
public class TableData<T> {
private List<T> list = Collections.emptyList();
private Integer page = 0;
private Integer pageSize = 10;
private long total = 0L;
public TableData(List<T> list, Integer page, Integer pageSize, long total) {
this.list = list;
this.page = page;
this.pageSize = pageSize;
this.total = total;
}
public TableData() {
}
}

View File

@ -62,5 +62,17 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@ApiModelProperty("项目状态字典project_status")
@TableField("status")
private String status;
@ApiModelProperty(value = "项目工作类型 可能有多项,逗号分隔", example = "1", notes = "项目工作类型 可能有多项,逗号分隔")
@TableField("work_type")
private String workType;
@ApiModelProperty(value = "项目工作岗位 可能有多项,逗号分隔", example = "1", notes = "项目工作岗位 可能有多项,逗号分隔")
@TableField("job")
private String job;
@ApiModelProperty(value = "项目安全风险点", example = "1", notes = "项目安全风险点 可能有多项,逗号分隔")
@TableField("safety_risk_point")
private String safetyRiskPoint;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,131 @@
package com.dite.znpt.domain.entity.job;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
/**
* @author wujinsong
* @date 2023/2/16 22:50
* @description: 项目中指定机组各人员内部工作内容
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gaea_job_in_work")
public class JobInWork extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "id", example = "78979879375", notes = "id")
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String Id;
@ApiModelProperty(value = "岗位id", example = "78979879375", notes = "岗位id")
@QueryCondition(func = MatchType.like)
private String jobId;
@ApiModelProperty(value = "安全交底及安全风险点照片", example = "https://123.png,https://456.png", notes = "安全交底及安全风险点照片")
private String safetyRiskPointImages;
@ApiModelProperty(value = "地勤工作描述", example = "工作描述工作描述", notes = "地勤工作描述")
private String jobDesc;
@ApiModelProperty(value = "地勤照片", example = "https://123.png,https://456.png", notes = "地勤照片")
private String images;
@ApiModelProperty(value = "地勤工作地点描述", example = "工作地点描述工作地点描述", notes = "地勤工作地点描述")
private String groundServiceJobAddressDesc;
@ApiModelProperty(value = "地勤工作地点照片", example = "https://123.png,https://456.png", notes = "地勤工作地点照片")
private String groundServiceJobAddressImages;
@ApiModelProperty(value = "地勤安全管控描述", example = "安全管控描述安全管控描述", notes = "地勤安全管控描述")
private String groundServiceSecurityControlDesc;
@ApiModelProperty(value = "地勤安全管控照片", example = "https://123.png,https://456.png", notes = "地勤安全管控照片")
private String groundServiceSecurityControlImages;
@ApiModelProperty(value = "地勤工作时间", example = "2022-01-22 10:00:00", notes = "地勤工作时间")
private String groundServiceWorkTime;
@ApiModelProperty(value = "司机工作描述", example = "工作描述工作描述", notes = "司机工作描述")
private String driverJobDesc;
@ApiModelProperty(value = "司机照片", example = "https://123.png,https://456.png", notes = "司机照片")
private String driverImages;
@ApiModelProperty(value = "司机工作地点描述", example = "工作地点描述工作地点描述", notes = "司机工作地点描述")
private String driverJobAddressDesc;
@ApiModelProperty(value = "司机工作地点照片", example = "https://123.png,https://456.png", notes = "司机工作地点照片")
private String driverJobAddressImages;
@ApiModelProperty(value = "司机安全管控描述", example = "安全管控描述安全管控描述", notes = "司机安全管控描述")
private String driverSecurityControlDesc;
@ApiModelProperty(value = "司机安全管控照片", example = "https://123.png,https://456.png", notes = "司机安全管控照片")
private String driverSecurityControlImages;
@ApiModelProperty(value = "司机工作时间", example = "2022-01-22 10:00:00", notes = "司机工作时间")
private String driverWorkTime;
@ApiModelProperty(value = "登高工作描述", example = "工作描述工作描述", notes = "登高工作描述")
private String ascendingJobDesc;
@ApiModelProperty(value = "登高照片", example = "工作描述工作描述", notes = "登高照片")
private String ascendingImages;
@ApiModelProperty(value = "登高工作地点描述", example = "工作地点描述工作地点描述", notes = "登高工作地点描述")
private String ascendingJobAddressDesc;
@ApiModelProperty(value = "登高工作地点照片", example = "https://123.png,https://456.png", notes = "登高工作地点照片")
private String ascendingJobAddressImages;
@ApiModelProperty(value = "登高安全管控描述", example = "安全管控描述安全管控描述", notes = "登高安全管控描述")
private String ascendingSecurityControlDesc;
@ApiModelProperty(value = "登高安全管控照片", example = "https://123.png,https://456.png", notes = "登高安全管控照片")
private String ascendingSecurityControlImages;
@ApiModelProperty(value = "登高工作时间", example = "2022-01-22 10:00:00", notes = "登高工作时间")
private String ascendingWorkTime;
@ApiModelProperty(value = "登高等级", example = "1一级 2二级 3三级 4四级 5五级", notes = "登高等级")
@QueryCondition(func = MatchType.like)
private String ascendingLevel;
@ApiModelProperty(value = "登高部件列表", example = "[]", notes = "登高部件列表")
@TableField(exist = false)
@QueryCondition(func = MatchType.equal)
private List<JobInWorkParts> ascendingPartsList;
@ApiModelProperty(value = "状态", example = "0草稿 1已提交 2组长提交 3项目经理审批通过", notes = "状态")
@QueryCondition(func = MatchType.equal)
private String status;
@ApiModelProperty(value = "安全员审批状态", example = "0未审批 1已审批", notes = "安全员审批状态")
@QueryCondition(func = MatchType.equal)
private String safetyOfficerStatus;
@ApiModelProperty(value = "质量员审批状态", example = "0未审批 1已审批", notes = "质量员审批状态")
@QueryCondition(func = MatchType.equal)
private String qualityOfficerStatus;
@ApiModelProperty(value = "施工人员", example = "施工人员", notes = "施工人员")
@TableField(exist = false)
@QueryCondition(func = MatchType.equal)
private String constructionPersonnel;
@ApiModelProperty(value = "具体岗位", example = "具体岗位", notes = "具体岗位")
@TableField(exist = false)
@QueryCondition(func = MatchType.equal)
private String jobCode;
}

View File

@ -0,0 +1,128 @@
package com.dite.znpt.domain.entity.job;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author wujinsong
* @date 2023/2/16 22:50
* @description: 项目中指定机组各人员内部工作内容
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gaea_job_in_work_parts")
public class JobInWorkParts extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "id", example = "78979879375", notes = "id")
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String Id;
@ApiModelProperty(value = "岗位id", example = "78979879375", notes = "岗位id")
@QueryCondition(func = MatchType.like)
private String jobId;
@ApiModelProperty(value = "叶片盖板原照片", example = "https://123.png,https://456.png", notes = "叶片盖板原照片")
private String leafPlateImages;
@ApiModelProperty(value = "叶片盖板原描述", example = "工作描述工作描述", notes = "叶片盖板原描述")
private String leafPlateDesc;
@ApiModelProperty(value = "叶片铭牌照片", example = "https://123.png,https://456.png", notes = "叶片铭牌照片")
private String leafDogtagImages;
@ApiModelProperty(value = "叶片铭牌描述", example = "工作描述工作描述", notes = "叶片铭牌描述")
private String leafDogtagDesc;
@ApiModelProperty(value = "叶片概况照片", example = "https://123.png,https://456.png", notes = "叶片概况照片")
private String leafProfileImages;
@ApiModelProperty(value = "叶片概况描述", example = "工作描述工作描述", notes = "叶片概况描述")
private String leafProfileDesc;
@ApiModelProperty(value = "腹板变形情况照片", example = "https://123.png,https://456.png", notes = "腹板变形情况照片")
private String webDeformationImages;
@ApiModelProperty(value = "腹板变形情况", example = "0未变形 1有变形", notes = "腹板变形情况")
private String webDeformation;
@ApiModelProperty(value = "腹板开裂情况照片", example = "https://123.png,https://456.png", notes = "腹板开裂情况照片")
private String webCrazeImages;
@ApiModelProperty(value = "腹板开裂情况", example = "0未开裂 1有开裂", notes = "腹板开裂情况")
private String webCraze;
@ApiModelProperty(value = "腹板粘接缝照片", example = "https://123.png,https://456.png", notes = "腹板粘接缝照片")
private String webGluedJointImages;
@ApiModelProperty(value = "腹板粘接缝开裂情况", example = "0未开裂 1有开裂", notes = "腹板粘接缝开裂情况")
private String webGluedJoint;
@ApiModelProperty(value = "后缘粘接缝照片", example = "https://123.png,https://456.png", notes = "后缘粘接缝照片")
private String trailingEdgeGluedJointImages;
@ApiModelProperty(value = "后缘粘接缝开裂情况", example = "0未开裂 1有开裂", notes = "后缘粘接缝开裂情况")
private String trailingEdgeGluedJoint;
@ApiModelProperty(value = "前缘粘接缝照片", example = "https://123.png,https://456.png", notes = "前缘粘接缝照片")
private String leadingEdgeGluedJointImages;
@ApiModelProperty(value = "前缘粘接缝开裂情况", example = "0未开裂 1有开裂", notes = "前缘粘接缝开裂情况")
private String leadingEdgeGluedJoint;
@ApiModelProperty(value = "ps/ss面开裂情况照片", example = "https://123.png,https://456.png", notes = "ps/ss面开裂情况照片")
private String psCrackingImages;
@ApiModelProperty(value = "ps/ss面开裂情况", example = "0未开裂 1有开裂", notes = "ps/ss面开裂情况")
private String psCracking;
@ApiModelProperty(value = "ps/ss面褶皱情况照片", example = "https://123.png,https://456.png", notes = "ps/ss面褶皱情况照片")
private String psWrinkleImages;
@ApiModelProperty(value = "ps/ss面褶皱情况", example = "0无褶皱 1有褶皱", notes = "ps/ss面褶皱情况")
private String psWrinkle;
@ApiModelProperty(value = "ps/ss面发白情况照片", example = "https://123.png,https://456.png", notes = "ps/ss面发白情况照片")
private String psGrowWhiteImages;
@ApiModelProperty(value = "ps/ss面发白情况", example = "0无发白 1有发白", notes = "ps/ss面发白情况")
private String psGrowWhite;
@ApiModelProperty(value = "ps/ss面碳化情况照片", example = "https://123.png,https://456.png", notes = "ps/ss面碳化情况照片")
private String psCarbonizeImages;
@ApiModelProperty(value = "ps/ss面碳化情况", example = "0无碳化 1有碳化", notes = "ps/ss面碳化情况")
private String psCarbonize;
@ApiModelProperty(value = "ps/ss面局部透光照片", example = "https://123.png,https://456.png", notes = "ps/ss面局部透光照片")
private String psTransmittingImages;
@ApiModelProperty(value = "ps/ss面局部透光", example = "0无透光 1有透光", notes = "ps/ss面局部透光")
private String psTransmitting;
@ApiModelProperty(value = "防雷导线松脱、断开照片", example = "https://123.png,https://456.png", notes = "防雷导线松脱、断开照片")
private String lightningConductorImages;
@ApiModelProperty(value = "防雷导线松脱、断开", example = "0无异常 1有异常", notes = "防雷导线松脱、断开")
private String lightningConductor;
@ApiModelProperty(value = "防雷卡遗失情况照片", example = "https://123.png,https://456.png", notes = "防雷卡遗失情况照片")
private String lightningCardLostImages;
@ApiModelProperty(value = "防雷卡遗失情况", example = "0无异常 1有异常", notes = "防雷卡遗失情况")
private String lightningCardLost;
@ApiModelProperty(value = "叶片盖板检查后照片", example = "https://123.png,https://456.png", notes = "叶片盖板检查后照片")
private String leafProfileCheckImages;
@ApiModelProperty(value = "叶片盖板检查后描述", example = "工作描述工作描述", notes = "叶片盖板检查后描述")
private String leafProfileCheckDesc;
}

View File

@ -0,0 +1,70 @@
package com.dite.znpt.domain.entity.job;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* @author wujinsong
* @date 2023/2/16 22:50
* @description: 项目中指定机组各人员工作岗位
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gaea_job")
public class JobInfo extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "id", example = "78979879375", notes = "id")
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String Id;
@ApiModelProperty(value = "项目id", example = "78979879375", notes = "项目id")
@QueryCondition(func = MatchType.like)
private String projectId;
@ApiModelProperty(value = "机组id", example = "78979879375", notes = "机组id")
@QueryCondition(func = MatchType.like)
private String crewId;
@ApiModelProperty(value = "工作类型", example = "工作类型", notes = "工作类型")
@QueryCondition(func = MatchType.equal)
private String workType;
@ApiModelProperty(value = "具体岗位", example = "具体岗位", notes = "具体岗位")
@QueryCondition(func = MatchType.equal)
private String jobCode;
@ApiModelProperty(value = "施工人员", example = "施工人员", notes = "施工人员")
@QueryCondition(func = MatchType.like)
private String constructionPersonnel;
@ApiModelProperty(value = "施工人员id", example = "施工人员id", notes = "施工人员id")
@QueryCondition(func = MatchType.equal)
private String constructionPersonnelId;
@ApiModelProperty(value = "状态", example = "0草稿 1已提交 2组长提交 3项目经理审批通过", notes = "状态", hidden = true)
@QueryCondition(func = MatchType.equal)
private String status;
@ApiModelProperty(value = "安全员审批状态", example = "0未审批 1已审批", notes = "安全员审批状态", hidden = true)
@QueryCondition(func = MatchType.equal)
private String safetyOfficerStatus;
@ApiModelProperty(value = "质量员审批状态", example = "0未审批 1已审批", notes = "质量员审批状态", hidden = true)
@QueryCondition(func = MatchType.equal)
private String qualityOfficerStatus;
@ApiModelProperty(value = "提交时间", example = "2023-11-11", notes = "提交时间", hidden = true)
@QueryCondition(func = MatchType.equal)
private Date submitTime;
}

View File

@ -0,0 +1,208 @@
package com.dite.znpt.domain.entity.job;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.AuditableEntity;
import com.dite.znpt.domain.entity.PartEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
/**
* @author wujinsong
* @date 2023/2/16 22:50
* @description: 项目中指定机组各人员外部工作内容
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gaea_job_out_work")
public class JobOutWork extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "id", example = "78979879375", notes = "id")
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String Id;
@ApiModelProperty(value = "岗位id", example = "78979879375", notes = "岗位id")
@QueryCondition(func = MatchType.like)
private String jobId;
@ApiModelProperty(value = "安全交底及安全风险点照片", example = "https://123.png,https://456.png", notes = "安全交底及安全风险点照片")
private String safetyRiskPointImages;
@ApiModelProperty(value = "司机工作描述", example = "工作描述工作描述", notes = "司机工作描述")
private String driverJobDesc;
@ApiModelProperty(value = "司机照片", example = "https://123.png,https://456.png", notes = "司机照片")
private String driverImages;
@ApiModelProperty(value = "司机工作地点描述", example = "工作地点描述工作地点描述", notes = "司机工作地点描述")
private String driverJobAddressDesc;
@ApiModelProperty(value = "司机工作地点照片", example = "https://123.png,https://456.png", notes = "司机工作地点照片")
private String driverJobAddressImages;
@ApiModelProperty(value = "司机安全管控描述", example = "安全管控描述安全管控描述", notes = "司机安全管控描述")
private String driverSecurityControlDesc;
@ApiModelProperty(value = "司机安全管控照片", example = "https://123.png,https://456.png", notes = "司机安全管控照片")
private String driverSecurityControlImages;
@ApiModelProperty(value = "司机工作时间", example = "2022-01-22 10:00:00", notes = "司机工作时间")
private String driverWorkTime;
@ApiModelProperty(value = "地勤工作描述", example = "工作描述工作描述", notes = "地勤工作描述")
private String groundServiceJobDesc;
@ApiModelProperty(value = "地勤工作内容照片", example = "https://123.png,https://456.png", notes = "地勤工作内容照片")
private String groundServiceImages;
@ApiModelProperty(value = "地勤工作地点描述", example = "工作地点描述工作地点描述", notes = "地勤工作地点描述")
private String groundServiceJobAddressDesc;
@ApiModelProperty(value = "地勤工作地点照片", example = "https://123.png,https://456.png", notes = "地勤工作地点照片")
private String groundServiceJobAddressImages;
@ApiModelProperty(value = "地勤安全管控描述", example = "安全管控描述安全管控描述", notes = "地勤安全管控描述")
private String groundServiceSecurityControlDesc;
@ApiModelProperty(value = "地勤安全管控照片", example = "https://123.png,https://456.png", notes = "地勤安全管控照片")
private String groundServiceSecurityControlImages;
@ApiModelProperty(value = "地勤工作时间", example = "2022-01-22 10:00:00", notes = "地勤工作时间")
private String groundServiceWorkTime;
@ApiModelProperty(value = "飞手工作描述", example = "工作描述工作描述", notes = "飞手工作描述")
private String jobDesc;
@ApiModelProperty(value = "飞手工作照片", example = "https://123.png,https://456.png", notes = "飞手工作照片")
private String images;
@ApiModelProperty(value = "飞手工作地点描述", example = "工作地点描述工作地点描述", notes = "飞手工作地点描述")
private String droneFlyerJobAddressDesc;
@ApiModelProperty(value = "飞手工作地点照片", example = "https://123.png,https://456.png", notes = "飞手工作地点照片")
private String droneFlyerJobAddressImages;
@ApiModelProperty(value = "飞手安全管控描述", example = "安全管控描述安全管控描述", notes = "飞手安全管控描述")
private String droneFlyerSecurityControlDesc;
@ApiModelProperty(value = "飞手安全管控照片", example = "https://123.png,https://456.png", notes = "飞手安全管控照片")
private String droneFlyerSecurityControlImages;
@ApiModelProperty(value = "飞手工作时间", example = "2022-01-22 10:00:00", notes = "飞手工作时间")
private String droneFlyerWorkTime;
@ApiModelProperty(value = "飞手施工时间", example = "2022-01-22 10:00:00", notes = "飞手施工时间")
private String droneFlyerConstructionTime;
@ApiModelProperty(value = "飞手拍摄图片数量", example = "2", notes = "飞手拍摄图片数量")
private String droneFlyerImageCount;
@ApiModelProperty(value = "飞手拍摄图片质量", example = "10", notes = "飞手拍摄图片质量")
private String droneFlyerImageQuality;
@ApiModelProperty(value = "飞手部件列表", example = "[]", notes = "部件列表")
@TableField(exist = false)
private List<PartEntity> droneFlyerPartsList;
@ApiModelProperty(value = "飞助工作描述", example = "工作描述工作描述", notes = "飞助工作描述")
private String flyAidJobDesc;
@ApiModelProperty(value = "飞助照片", example = "https://123.png,https://456.png", notes = "飞助照片")
private String flyAidImages;
@ApiModelProperty(value = "飞助工作地点描述", example = "工作地点描述工作地点描述", notes = "飞助工作地点描述")
private String flyAidJobAddressDesc;
@ApiModelProperty(value = "飞助工作地点照片", example = "https://123.png,https://456.png", notes = "飞助工作地点照片")
private String flyAidJobAddressImages;
@ApiModelProperty(value = "飞助安全管控描述", example = "安全管控描述安全管控描述", notes = "飞助安全管控描述")
private String flyAidSecurityControlDesc;
@ApiModelProperty(value = "飞助安全管控照片", example = "https://123.png,https://456.png", notes = "飞助安全管控照片")
private String flyAidSecurityControlImages;
@ApiModelProperty(value = "飞助工作时间", example = "2022-01-22 10:00:00", notes = "飞助工作时间")
private String flyAidWorkTime;
@ApiModelProperty(value = "飞助施工时间", example = "2022-01-22 10:00:00", notes = "飞助施工时间")
private String flyAidConstructionTime;
@ApiModelProperty(value = "飞助拍摄图片数量", example = "2", notes = "飞助拍摄图片数量")
private String flyAidImageCount;
@ApiModelProperty(value = "飞助拍摄图片质量", example = "10", notes = "飞助拍摄图片质量")
private String flyAidImageQuality;
@ApiModelProperty(value = "飞助部件列表", example = "[]", notes = "部件列表")
@TableField(exist = false)
private List<PartEntity> flyAidPartsList;
@ApiModelProperty(value = "登高工作描述", example = "工作描述工作描述", notes = "登高工作描述")
private String ascendingJobDesc;
@ApiModelProperty(value = "登高等级", example = "1一级 2二级 3三级 4四级 5五级", notes = "登高等级")
@QueryCondition(func = MatchType.like)
private String ascendingLevel;
@ApiModelProperty(value = "登高照片", example = "https://123.png,https://456.png", notes = "登高照片")
private String ascendingImages;
@ApiModelProperty(value = "登高工作地点描述", example = "工作地点描述工作地点描述", notes = "登高工作地点描述")
private String ascendingJobAddressDesc;
@ApiModelProperty(value = "登高工作地点照片", example = "https://123.png,https://456.png", notes = "登高工作地点照片")
private String ascendingJobAddressImages;
@ApiModelProperty(value = "登高安全管控描述", example = "安全管控描述安全管控描述", notes = "登高安全管控描述")
private String ascendingSecurityControlDesc;
@ApiModelProperty(value = "登高安全管控照片", example = "https://123.png,https://456.png", notes = "登高安全管控照片")
private String ascendingSecurityControlImages;
@ApiModelProperty(value = "登高工作时间", example = "2022-01-22 10:00:00", notes = "登高工作时间")
private String ascendingWorkTime;
@ApiModelProperty(value = "登高施工时间", example = "2022-01-22 10:00:00", notes = "登高施工时间")
private String ascendingConstructionTime;
@ApiModelProperty(value = "登高拍摄图片数量", example = "2", notes = "登高拍摄图片数量")
private String ascendingImageCount;
@ApiModelProperty(value = "登高拍摄图片质量", example = "10", notes = "登高拍摄图片质量")
private String ascendingImageQuality;
@ApiModelProperty(value = "登高部件列表", example = "[]", notes = "部件列表")
@TableField(exist = false)
private List<PartEntity> ascendingPartsList;
@ApiModelProperty(value = "状态", example = "0草稿 1已提交 2组长提交 3项目经理审批通过", notes = "状态")
@QueryCondition(func = MatchType.equal)
private String status;
@ApiModelProperty(value = "安全员审批状态", example = "0未审批 1已审批", notes = "安全员审批状态")
@QueryCondition(func = MatchType.equal)
private String safetyOfficerStatus;
@ApiModelProperty(value = "质量员审批状态", example = "0未审批 1已审批", notes = "质量员审批状态")
@QueryCondition(func = MatchType.equal)
private String qualityOfficerStatus;
@ApiModelProperty(value = "施工人员", example = "施工人员", notes = "施工人员")
@TableField(exist = false)
@QueryCondition(func = MatchType.equal)
private String constructionPersonnel;
@ApiModelProperty(value = "具体岗位", example = "具体岗位", notes = "具体岗位")
@TableField(exist = false)
@QueryCondition(func = MatchType.equal)
private String jobCode;
}

View File

@ -0,0 +1,49 @@
package com.dite.znpt.domain.entity.job;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author wujinsong
* @date 2023/2/16 22:50
* @description: 项目中指定机组各人员外部工作内容
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gaea_job_summary_work")
public class JobSummaryWork extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "id", example = "78979879375", notes = "id")
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String Id;
@ApiModelProperty(value = "岗位id", example = "78979879375", notes = "岗位id")
@QueryCondition(func = MatchType.like)
private String jobId;
@ApiModelProperty(value = "工作描述", example = "工作描述工作描述", notes = "工作描述")
@QueryCondition(func = MatchType.equal)
private String jobDesc;
@ApiModelProperty(value = "状态", example = "0草稿 1已提交 2组长提交 3项目经理审批通过", notes = "状态")
@QueryCondition(func = MatchType.equal)
private String status;
@ApiModelProperty(value = "施工人员", example = "施工人员", notes = "施工人员")
@TableField(exist = false)
private String constructionPersonnel;
@ApiModelProperty(value = "具体岗位", example = "具体岗位", notes = "具体岗位")
@TableField(exist = false)
private String jobCode;
}

View File

@ -0,0 +1,23 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author cuizhibin
* @date 2023/10/30 20:38
* @description jobq
*/
@Data
public class JobAllContentReq extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "机组id", example = "78979879375", notes = "机组id")
private String crewId;
@ApiModelProperty(value = "工作类型", example = "工作类型", notes = "工作类型")
private String workType;
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import lombok.Data;
/**
* @author cuizhibin
* @date 2023/10/30 20:38
* @description jobq
*/
@Data
public class JobAntiThunderWorkReq extends JobAntiThunderWork {
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.entity.job.JobInWorkParts;
import lombok.Data;
/**
* @author wujinsong
* @date 2023/2/17 09:47
* @description: 部件
*/
@Data
public class JobInWorkPartsReq extends JobInWorkParts {
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.entity.job.JobInWork;
import lombok.Data;
/**
* @author cuizhibin
* @date 2023/10/30 20:38
* @description jobq
*/
@Data
public class JobInWorkReq extends JobInWork {
}

View File

@ -0,0 +1,26 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.entity.job.JobInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author cuizhibin
* @date 2023/10/30 20:38
* @description jobq
*/
@Data
public class JobInfoReq extends JobInfo {
@ApiModelProperty(value = "提交开始时间", example = "1653764367643", notes = "提交开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date submitTimeStart;
@ApiModelProperty(value = "提交结束时间", example = "1653764327643", notes = "提交结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date submitTimeEnd;
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.entity.job.JobOutWork;
import lombok.Data;
/**
* @author cuizhibin
* @date 2023/10/30 20:38
* @description jobq
*/
@Data
public class JobOutWorkReq extends JobOutWork {
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.domain.vo.job.req;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import lombok.Data;
/**
* @author cuizhibin
* @date 2023/10/30 20:38
* @description jobq
*/
@Data
public class JobSummaryWorkReq extends JobSummaryWork {
}

View File

@ -0,0 +1,35 @@
package com.dite.znpt.domain.vo.job.resp;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author Julio
* @date 2023/2/1 14:36
* @description 地址
*/
@Data
public class JobAllContentResp implements Serializable {
@ApiModelProperty(value = "防雷工作-登高", example = "{}", notes = "防雷工作-登高")
private JobAntiThunderWork work__ascend_height;
@ApiModelProperty(value = "防雷工作-抄表", example = "{}", notes = "防雷工作-抄表")
private JobAntiThunderWork work__meter_reading;
@ApiModelProperty(value = "防雷工作-无人化装备操作", example = "{}", notes = "防雷工作-无人化装备操作")
private JobAntiThunderWork work__unman_operation;
@ApiModelProperty(value = "内部工作", example = "{}", notes = "内部工作")
private JobInWork jobInWork;
@ApiModelProperty(value = "外部工作", example = "{}", notes = "外部工作")
private JobOutWork jobOutWork;
@ApiModelProperty(value = "汇总报告工作", example = "{}", notes = "汇总报告工作")
private JobSummaryWork jobSummaryWork;
}

View File

@ -0,0 +1,17 @@
package com.dite.znpt.domain.vo.job.resp;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author Julio
* @date 2023/2/1 14:36
* @description 地址
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JobAntiThunderWorkResp extends JobAntiThunderWork implements Serializable {
}

View File

@ -0,0 +1,14 @@
package com.dite.znpt.domain.vo.job.resp;
import lombok.Data;
import java.io.Serializable;
/**
* @author wujinsong
* @date 2023/2/17 09:47
* @description: 部件
*/
@Data
public class JobInWorkPartsResp implements Serializable {
}

View File

@ -0,0 +1,17 @@
package com.dite.znpt.domain.vo.job.resp;
import com.dite.znpt.domain.entity.job.JobInWork;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author Julio
* @date 2023/2/1 14:36
* @description 地址
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JobInWorkResp extends JobInWork implements Serializable {
}

View File

@ -0,0 +1,17 @@
package com.dite.znpt.domain.vo.job.resp;
import com.dite.znpt.domain.entity.job.JobInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author Julio
* @date 2023/2/1 14:36
* @description 地址
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JobInfoResp extends JobInfo implements Serializable {
}

View File

@ -0,0 +1,17 @@
package com.dite.znpt.domain.vo.job.resp;
import com.dite.znpt.domain.entity.job.JobOutWork;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author Julio
* @date 2023/2/1 14:36
* @description 地址
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JobOutWorkResp extends JobOutWork implements Serializable {
}

View File

@ -0,0 +1,17 @@
package com.dite.znpt.domain.vo.job.resp;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author Julio
* @date 2023/2/1 14:36
* @description 地址
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class JobSummaryWorkResp extends JobSummaryWork implements Serializable {
}

View File

@ -0,0 +1,49 @@
package com.dite.znpt.domain.vo.job.resp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("机组下各工作类型状态处理类")
public class TurbineStatusResp {
private String id;
@ApiModelProperty(value = "内部工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过", example = "{}", notes = "内部工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String antiThunderWorkStatus;
@ApiModelProperty(value = "外部工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过", example = "{}", notes = "外部工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String inWorkStatus;
@ApiModelProperty(value = "防雷工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过", example = "{}", notes = "防雷工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String outWorkStatus;
@ApiModelProperty(value = "数据报告工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过", example = "{}", notes = "数据报告工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String summaryWorkStatus;
@ApiModelProperty(value = "内部工作安全员审核状态, -1不存在0未审核、1审核通过", example = "{}", notes = "内部工作安全员审核状态, -1不存在0未审核、1审核通过")
private String antiThunderWorkSafetyStatus;
@ApiModelProperty(value = "外部工作安全员审核状态, -1不存在0未审核、1审核通过", example = "{}", notes = "外部工作安全员审核状态, -1不存在0未审核、1审核通过")
private String inWorkSafetyStatus;
@ApiModelProperty(value = "防雷工作安全员审核状态, -1不存在0未审核、1审核通过", example = "{}", notes = "防雷工作安全员审核状态, -1不存在0未审核、1审核通过")
private String outWorkSafetyStatus;
@ApiModelProperty(value = "内部工作质量员审核状态, -1不存在0未审核、1审核通过", example = "{}", notes = "内部工作质量员审核状态, -1不存在0未审核、1审核通过")
private String antiThunderWorkQualityStatus;
@ApiModelProperty(value = "外部工作质量员审核状态, -1不存在0未审核、1审核通过", example = "{}", notes = "外部工作质量员审核状态, -1不存在0未审核、1审核通过")
private String inWorkQualityStatus;
@ApiModelProperty(value = "防雷工作质量员审核状态, -1不存在0未审核、1审核通过", example = "{}", notes = "防雷工作质量员审核状态, -1不存在0未审核、1审核通过")
private String outWorkQualityStatus;
@ApiModelProperty(value = "防雷是否不合格1不合格0合格", example = "{}", notes = "防雷是否不合格1不合格0合格")
private Boolean lightningUnqualifiedAll;
}

View File

@ -0,0 +1,214 @@
package com.dite.znpt.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author wujinsong
* @date 2021/9/15 3:20 下午
* @description: 枚举类
*/
public class Enums {
/**
* @date 2021/9/15 3:24 下午
* @description: N:正常D:删除
*/
@Getter
@AllArgsConstructor
public enum YN {
/**
* @date 2021/9/15 3:24 下午
* @description: 正常
*/
Yes(1, ""),
/**
* @date 2021/9/15 3:24 下午
* @description: 启用
*/
No(0, "");
final int value;
final String name;
}
@Getter
@AllArgsConstructor
public enum EUserStatus {
ENABLE(1, "启用"),
DISABLE(0, "禁用");
final int value;
final String name;
}
@Getter
@AllArgsConstructor
public enum EWorkType {
OutWork("out-work", "外部工作"),
InWork("in-work", "内部工作"),
AntiThunderWork("lightning-protection-work", "防雷工作"),
SummaryWork("summary-report", "数据报告");
final String value;
final String name;
public static EWorkType getByValue(String value) {
for (EWorkType e : EWorkType.values()) {
if (e.value.equals(value)) {
return e;
}
}
return null;
}
}
@Getter
@AllArgsConstructor
public enum EInWorkType {
GROUND_SERVICE("in-work__ground_service","地勤"),
ASCEND_HEIGHT("in-work__ascend-height","登高"),
DRIVER("in-work__driver","司机");
final String value;
final String name;
public static EInWorkType getByValue(String value) {
for (EInWorkType e : EInWorkType.values()) {
if (e.value.equals(value)) {
return e;
}
}
return null;
}
}
@Getter
@AllArgsConstructor
public enum EOutWorkType {
DRIVER("out-work__driver","司机"),
FLYAID("out-work__flyaid","飞助"),
DRONE_FLYER("out-work__drone-flyer","飞手"),
ASCEND_HEIGHT("out-work__ascend-height","登高"),
GROUND_SERVICE("out-work__ground_service","地勤");
final String value;
final String name;
public static EOutWorkType getByValue(String value) {
for (EOutWorkType e : EOutWorkType.values()) {
if (e.value.equals(value)) {
return e;
}
}
return null;
}
}
@Getter
@AllArgsConstructor
public enum EAntiWorkType {
ASCEND_HEIGHT("lightning-protection-work__ascend-height","登高"),
METER_READING("lightning-protection-work__meter_reading","抄表"),
UNMAN_OPERATION("lightning-protection-work__unman_operation","无人化装备操作"),
UNMAN_ANTI_THUNDER("lightning-protection-work__unman_anti_thunder","无人化防雷"),
DRIVER("lightning-protection-work__driver","司机"),
GROUND_SERVICE("lightning-protection-work__ground_service","地勤");
final String value;
final String name;
public static EAntiWorkType getByValue(String value) {
for (EAntiWorkType e : EAntiWorkType.values()) {
if (e.value.equals(value)) {
return e;
}
}
return null;
}
}
@Getter
@AllArgsConstructor
public enum EReportWorkType {
SUMMARY_REPORT("data-report__summary-report","汇总报告");
final String value;
final String name;
}
@Getter
@AllArgsConstructor
public enum EWorkStatus {
DRAFT("0", "草稿"),
SUBMITTED("1", "已提交"),
LEADER_SUBMITTED("2", "组长提交"),
MANAGER_APPROVAL("3", "项目经理审批通过");
final String value;
final String name;
}
@Getter
@AllArgsConstructor
public enum ECrewWorkStatus {
NON_EXISTS("-1", "不存在"),
NOT_START("0", "未开始"),
START_CONSTRUCTION("1", "开始施工"),
SUBMITTED_REPORT("2", "已提交报告"),
APPROVAL("3", "审核通过");
final String value;
final String name;
}
@Getter
@AllArgsConstructor
public enum ERoleCode {
/**
* 管理员
*/
Manager(0, "Manager"),
/**
* 项目管理员
*/
ProjectManager(0, "ProjectManager"),
/**
* 大项目管理员
*/
SeniorProjectManager(0, "SeniorProjectManager"),
/**
* 安全员
*/
SafetyOfficer(0, "SafetyOfficer"),
/**
* 质量员
*/
QualityOfficer(0, "QualityOfficer"),
/**
* 施工人员
*/
Builder(0, "Builder"),
;
final int value;
final String name;
}
@Getter
@AllArgsConstructor
public enum EAuthStatus {
/**
* 待审核
*/
PENDING(0, "待审核", "0"),
/**
* 通过
*/
APPROVAL(1, "通过", "1");
final int value;
final String name;
final String val;
}
}

View File

@ -0,0 +1,18 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.vo.job.req.JobAntiThunderWorkReq;
import com.dite.znpt.domain.vo.job.resp.JobAntiThunderWorkResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/24 14:52
* @Description: 表数据库访问层
*/
public interface JobAntiThunderWorkMapper extends BaseMapper<JobAntiThunderWork> {
List<JobAntiThunderWorkResp> queryBySelective(JobAntiThunderWorkReq jobAntiThunderWorkReq);
}

View File

@ -0,0 +1,18 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.vo.job.req.JobInWorkReq;
import com.dite.znpt.domain.vo.job.resp.JobInWorkResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/24 14:52
* @Description: 表数据库访问层
*/
public interface JobInWorkMapper extends BaseMapper<JobInWork> {
List<JobInWorkResp> queryBySelective(JobInWorkReq gaeaJobInWorkReq);
}

View File

@ -0,0 +1,18 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.job.JobInWorkParts;
import com.dite.znpt.domain.vo.job.req.JobInWorkPartsReq;
import com.dite.znpt.domain.vo.job.resp.JobInWorkPartsResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/24 14:52
* @Description: 表数据库访问层
*/
public interface JobInWorkPartsMapper extends BaseMapper<JobInWorkParts> {
List<JobInWorkPartsResp> queryBySelective(JobInWorkPartsReq gaeaJobInWorkPartsReq);
}

View File

@ -0,0 +1,20 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.resp.JobInfoResp;
import com.dite.znpt.domain.vo.job.resp.TurbineStatusResp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author huise23
* @date 2025/04/24 14:52
* @Description: 表数据库访问层
*/
public interface JobInfoMapper extends BaseMapper<JobInfo> {
List<TurbineStatusResp> calCrewStatus(@Param("crewIds") List<String> crewIds);
}

View File

@ -0,0 +1,19 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
import com.dite.znpt.domain.vo.job.resp.JobOutWorkResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/24 14:52
* @Description: 表数据库访问层
*/
public interface JobOutWorkMapper extends BaseMapper<JobOutWork> {
List<JobOutWorkResp> queryBySelective(JobOutWorkReq gaeaJobOutWorkReq);
}

View File

@ -0,0 +1,18 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.vo.job.req.JobSummaryWorkReq;
import com.dite.znpt.domain.vo.job.resp.JobSummaryWorkResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/24 14:52
* @Description: 表数据库访问层
*/
public interface JobSummaryWorkMapper extends BaseMapper<JobSummaryWork> {
List<JobSummaryWorkResp> queryBySelective(JobSummaryWorkReq gaeaJobSummaryWorkReq);
}

View File

@ -0,0 +1,41 @@
package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.vo.job.req.JobAntiThunderWorkReq;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import java.util.List;
public interface JobAntiThunderWorkService extends IService<JobAntiThunderWork> {
JobAntiThunderWork saveInfo(JobAntiThunderWork entity);
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobAntiThunderWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
List<JobAntiThunderWork> list(JobInfoReq request);
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request);
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request);
List<JobAntiThunderWork> listByJobId(JobAntiThunderWorkReq dto);
}

View File

@ -0,0 +1,8 @@
package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.entity.job.JobInWorkParts;
public interface JobInWorkPartsService extends IService<JobInWorkParts> {
}

View File

@ -0,0 +1,42 @@
package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.vo.job.req.JobInWorkReq;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import java.util.List;
public interface JobInWorkService extends IService<JobInWork> {
JobInWork saveInfo(JobInWork entity);
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobInWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
List<JobInWork> list(JobInfoReq request);
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request);
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request);
List<JobInWork> listByJobId(JobInWorkReq dto);
}

View File

@ -0,0 +1,42 @@
package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
import java.util.List;
public interface JobOutWorkService extends IService<JobOutWork> {
JobOutWork saveInfo(JobOutWork entity);
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobOutWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
List<JobOutWork> list(JobInfoReq request);
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request);
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request);
List<JobOutWork> listByJobId(JobOutWorkReq dto);
}

View File

@ -0,0 +1,15 @@
package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.resp.TurbineStatusResp;
import java.util.List;
public interface JobService extends IService<JobInfo> {
List<JobInfo> page(JobInfoReq jobInfoReq);
List<TurbineStatusResp> calCrewStatus(List<String> crewIds);
}

View File

@ -0,0 +1,41 @@
package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobSummaryWorkReq;
import java.util.List;
public interface JobSummaryWorkService extends IService<JobSummaryWork> {
JobSummaryWork saveInfo(JobSummaryWork entity);
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobSummaryWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
List<JobSummaryWork> list(JobInfoReq request);
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request);
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request);
List<JobSummaryWork> listByJobId(JobSummaryWorkReq dto);
}

View File

@ -0,0 +1,170 @@
package com.dite.znpt.service.job.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.context.UserContext;
import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.vo.job.req.JobAntiThunderWorkReq;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.JobAntiThunderWorkMapper;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.service.TurbineService;
import com.dite.znpt.service.job.JobAntiThunderWorkService;
import com.dite.znpt.service.job.JobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = Exception.class)
public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWorkMapper, JobAntiThunderWork> implements JobAntiThunderWorkService {
@Autowired
private TurbineService turbineService;
@Autowired
private JobService jobService;
@Autowired
private ProjectService projectService;
@Override
public JobAntiThunderWork saveInfo(JobAntiThunderWork entity) {
if (StrUtil.isNotBlank(entity.getId())) {
JobAntiThunderWork oldEntity = getById(entity.getId());
if (!"0".equals(oldEntity.getStatus())) {
throw new ServiceException("内容已提交,不可修改");
}
}
entity.preSave();
saveOrUpdate(entity);
JobInfo jobInfo = jobService.getById(entity.getJobId());
turbineService.updateStatusNew(jobInfo.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
jobInfo.setSubmitTime(new Date());
jobService.updateById(jobInfo);
}
return entity;
}
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobAntiThunderWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
public List<JobAntiThunderWork> list(JobInfoReq request) {
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
if (!jobInfoList.isEmpty()) {
List<String> statusList = ListUtil.of("1", "2", "3");
if (!Enums.ERoleCode.Builder.getName().equals(UserContext.getRoleCode())) {
statusList = ListUtil.of("2", "3");
}
List<String> jobIds = jobInfoList.stream().map(JobInfo::getId).collect(Collectors.toList());
Map<String, JobInfo> jobId2Job = jobInfoList.stream().collect(Collectors.toMap(JobInfo::getId, i -> i));
List<JobAntiThunderWork> list = lambdaQuery().in(JobAntiThunderWork::getJobId, jobIds).in(JobAntiThunderWork::getStatus, statusList).list();
list.forEach(work -> {
JobInfo jobInfo = jobId2Job.get(work.getJobId());
work.setConstructionPersonnel(jobInfo.getConstructionPersonnel());
work.setJobCode(jobInfo.getJobCode());
});
return list;
}
return new ArrayList<>();
}
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.AntiThunderWork.getValue());
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
if (jobInfoList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
JobInfo jobInfo = jobInfoList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobAntiThunderWork> workList = lambdaQuery().in(JobAntiThunderWork::getJobId, jobInfoList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
if (StrUtil.isNotBlank(project.getAuditorId())) {
Optional<JobAntiThunderWork> any = workList.stream().filter(item -> !Objects.equals(item.getSafetyOfficerStatus(), Enums.EAuthStatus.APPROVAL.getVal())).findAny();
if (any.isPresent()) {
throw new ServiceException("安全员未审核");
}
}
if (StrUtil.isNotBlank(project.getQualityOfficerId())) {
Optional<JobAntiThunderWork> any = workList.stream().filter(item -> !Objects.equals(item.getQualityOfficerStatus(), Enums.EAuthStatus.APPROVAL.getVal())).findAny();
if (any.isPresent()) {
throw new ServiceException("质量员未审核");
}
}
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.AntiThunderWork.getValue());
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
if (jobInfoList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
JobInfo jobInfo = jobInfoList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobAntiThunderWork> workList = lambdaQuery().in(JobAntiThunderWork::getJobId, jobInfoList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}
@Override
public List<JobAntiThunderWork> listByJobId(JobAntiThunderWorkReq dto) {
return lambdaQuery().eq(JobAntiThunderWork::getJobId, dto.getJobId()).list();
}
}

View File

@ -0,0 +1,21 @@
package com.dite.znpt.service.job.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.job.JobInWorkParts;
import com.dite.znpt.mapper.JobInWorkPartsMapper;
import com.dite.znpt.service.job.JobInWorkPartsService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author wujinsong
* @date 2023/2/17 09:49
* @description: 部件
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class JobInWorkPartsServiceImpl extends ServiceImpl<JobInWorkPartsMapper, JobInWorkParts> implements JobInWorkPartsService {
}

View File

@ -0,0 +1,193 @@
package com.dite.znpt.service.job.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.context.UserContext;
import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.job.*;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.vo.job.req.JobInWorkReq;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.JobInWorkMapper;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.service.TurbineService;
import com.dite.znpt.service.job.JobInWorkPartsService;
import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.job.JobService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = Exception.class)
public class JobInWorkServiceImpl extends ServiceImpl<JobInWorkMapper, JobInWork> implements JobInWorkService {
@Autowired
private TurbineService turbineService;
@Autowired
private JobService jobService;
@Autowired
private JobInWorkPartsService jobInWorkPartsService;
@Autowired
private ProjectService projectService;
@Override
public JobInWork saveInfo(JobInWork entity) {
if (StrUtil.isNotBlank(entity.getId())) {
JobInWork oldEntity = this.getById(entity.getId());
if (!"0".equals(oldEntity.getStatus())) {
throw new ServiceException("内容已提交,不可修改");
}
}
saveOrUpdate(entity);
if (CollUtil.isNotEmpty(entity.getAscendingPartsList())) {
List<String> idList = entity.getAscendingPartsList().stream().map(JobInWorkParts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
jobInWorkPartsService.lambdaUpdate().eq(JobInWorkParts::getJobId, entity.getJobId()).remove();
} else {
jobInWorkPartsService.lambdaUpdate().eq(JobInWorkParts::getJobId, entity.getJobId())
.ne(JobInWorkParts::getId, idList).remove();
}
entity.getAscendingPartsList().forEach(item -> item.setJobId(entity.getJobId()));
jobInWorkPartsService.saveOrUpdateBatch(entity.getAscendingPartsList());
} else {
jobInWorkPartsService.lambdaUpdate().eq(JobInWorkParts::getJobId, entity.getJobId()).remove();
}
JobInfo jobInfo = jobService.getById(entity.getJobId());
turbineService.updateStatusNew(jobInfo.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
jobInfo.setSubmitTime(new Date());
jobService.updateById(jobInfo);
}
return entity;
}
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobInWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
public List<JobInWork> list(JobInfoReq request) {
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (!jobList.isEmpty()) {
List<String> statusList = ListUtil.of("1", "2", "3");
if (!Enums.ERoleCode.Builder.getName().equals(UserContext.getRoleCode())) {
statusList = ListUtil.of("2", "3");
}
List<String> jobIds = jobList.stream().map(JobInfo::getId).collect(Collectors.toList());
Map<String, JobInfo> jobId2Job = jobList.stream().collect(Collectors.toMap(JobInfo::getId, Function.identity()));
List<JobInWork> list = lambdaQuery().in(JobInWork::getJobId, jobIds).in(JobInWork::getStatus, statusList).list();
list.forEach(work -> {
JobInfo job = jobId2Job.get(work.getJobId());
work.setConstructionPersonnel(job.getConstructionPersonnel());
work.setJobCode(job.getJobCode());
List<JobInWorkParts> workParts = jobInWorkPartsService.lambdaQuery().eq(JobInWorkParts::getJobId, work.getJobId()).list();
work.setAscendingPartsList(workParts);
});
return list;
}
return new ArrayList<>();
}
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.InWork.getValue());
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (jobList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
JobInfo jobInfo = jobList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobInWork> workList = lambdaQuery().in(JobInWork::getJobId, jobList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
if (StrUtil.isNotBlank(project.getAuditorId())) {
Optional<JobInWork> any = workList.stream().filter(item -> !Objects.equals(item.getSafetyOfficerStatus(), Enums.EAuthStatus.APPROVAL.getVal())).findAny();
if (any.isPresent()) {
throw new ServiceException("安全员未审核");
}
}
if (StrUtil.isNotBlank(project.getQualityOfficerId())) {
Optional<JobInWork> any = workList.stream().filter(item -> !Objects.equals(item.getQualityOfficerStatus(), Enums.EAuthStatus.APPROVAL.getVal())).findAny();
if (any.isPresent()) {
throw new ServiceException("质量员未审核");
}
}
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
jobInfo.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.InWork.getValue());
List<JobInfo> jobInfoList = jobService.list(QueryWrapperBuilder.build(request));
if (jobInfoList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
JobInfo jobInfo = jobInfoList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobInWork> workList = lambdaQuery().in(JobInWork::getJobId, jobInfoList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}
@Override
public List<JobInWork> listByJobId(JobInWorkReq dto) {
return lambdaQuery().eq(JobInWork::getJobId, dto.getJobId()).list();
}
}

View File

@ -0,0 +1,252 @@
package com.dite.znpt.service.job.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.context.UserContext;
import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.JobInWorkMapper;
import com.dite.znpt.mapper.JobOutWorkMapper;
import com.dite.znpt.service.PartService;
import com.dite.znpt.service.TurbineService;
import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.job.JobOutWorkService;
import com.dite.znpt.service.job.JobService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = Exception.class)
public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOutWork> implements JobOutWorkService {
@Autowired
private TurbineService turbineService;
@Autowired
private PartService partService;
@Autowired
private JobService jobService;
@Override
public JobOutWork saveInfo(JobOutWork entity) {
if (StrUtil.isNotBlank(entity.getId())) {
JobOutWork oldEntity = this.getById(entity.getId());
if (!"0".equals(oldEntity.getStatus())) {
throw new ServiceException("内容已提交,不可修改");
}
}
saveOrUpdate(entity);
// 飞手部件列表
if (CollUtil.isNotEmpty(entity.getDroneFlyerPartsList())) {
List<String> idList = entity.getDroneFlyerPartsList().stream().map(Parts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
// partService.lambdaUpdate().
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.DRONE_FLYER.getValue());
} else {
partService.delByReportIdAndIdNotInAndJobCode(entity.getId(), idList, Enums.EOutWorkType.DRONE_FLYER.getValue());
}
JobInfo job = jobService.findByIdAndS(entity.getJobId(), Enums.S.Yes.getValue());
entity.getDroneFlyerPartsList().forEach(item -> {
item.setProjectId(job.getProjectId());
item.setCrewId(job.getCrewId());
item.setReportId(entity.getId());
item.setJobCode(Enums.EOutWorkType.DRONE_FLYER.getValue());
});
partService.save(entity.getDroneFlyerPartsList());
} else {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.DRONE_FLYER.getValue());
}
// 飞助部件列表
if (CollUtil.isNotEmpty(entity.getFlyAidPartsList())) {
List<String> idList = entity.getFlyAidPartsList().stream().map(Parts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.FLYAID.getValue());
} else {
partService.delByReportIdAndIdNotInAndJobCode(entity.getId(), idList, Enums.EOutWorkType.FLYAID.getValue());
}
Job job = jobService.findByIdAndS(entity.getJobId(), Enums.S.Yes.getValue());
entity.getFlyAidPartsList().forEach(item -> {
item.setProjectId(job.getProjectId());
item.setCrewId(job.getCrewId());
item.setReportId(entity.getId());
item.setJobCode(Enums.EOutWorkType.FLYAID.getValue());
});
partService.save(entity.getFlyAidPartsList());
} else {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.FLYAID.getValue());
}
// 登高部件列表
if (CollUtil.isNotEmpty(entity.getAscendingPartsList())) {
List<String> idList = entity.getAscendingPartsList().stream().map(Parts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
} else {
partService.delByReportIdAndIdNotInAndJobCode(entity.getId(), idList, Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
}
Job job = jobService.findByIdAndS(entity.getJobId(), Enums.S.Yes.getValue());
entity.getAscendingPartsList().forEach(item -> {
item.setProjectId(job.getProjectId());
item.setCrewId(job.getCrewId());
item.setReportId(entity.getId());
item.setJobCode(Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
});
partService.save(entity.getAscendingPartsList());
} else {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
}
Job job = jobService.findByIdAndS(entity.getJobId(), 1);
crewService.updateStatusNew(job.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
job.setSubmitTime(new Date());
jobService.save(job);
}
return outWork;
}
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobOutWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
public List<JobOutWork> list(JobInfoReq request) {
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (!jobList.isEmpty()) {
List<String> statusList = ListUtil.of("1", "2", "3");
if (!Enums.ERoleCode.Builder.getName().equals(UserContext.getRoleCode())) {
statusList = ListUtil.of("2", "3");
}
List<String> jobIds = jobList.stream().map(Job::getId).collect(Collectors.toList());
Map<String, Job> jobId2Job = jobList.stream().collect(Collectors.toMap(Job::getId, i -> i));
List<JobOutWork> list = this.repository.findByJobIdInAndStatusIn(jobIds, statusList);
list.forEach(work -> {
Job job = jobId2Job.get(work.getJobId());
work.setConstructionPersonnel(job.getConstructionPersonnel());
work.setJobCode(job.getJobCode());
work.setDroneFlyerPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.DRONE_FLYER.getValue()));
work.setFlyAidPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.FLYAID.getValue()));
work.setAscendingPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue()));
});
return list;
}
return new ArrayList<>();
}
/**
* @param vo
* @return {@link Page}<{@link JobOutWork}>
*/
@Override
public Page<JobOutWork> list(JobOutWorkReq vo) {
Page<JobOutWork> page = super.page(vo);
page.getContent().forEach(work -> {
work.setDroneFlyerPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.DRONE_FLYER.getValue()));
work.setFlyAidPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.FLYAID.getValue()));
work.setAscendingPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue()));
});
return page;
}
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.OutWork.getValue());
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (jobList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobOutWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
if (StrUtil.isNotBlank(project.getAuditorId())) {
Optional<JobOutWork> any = workList.stream().filter(item -> !Objects.equals(item.getSafetyOfficerStatus(), Enums.EAuthStatus.APPROVAL.getVal())).findAny();
if (any.isPresent()) {
throw new ServiceException("安全员未审核");
}
}
if (StrUtil.isNotBlank(project.getQualityOfficerId())) {
Optional<JobOutWork> any = workList.stream().filter(item -> !Objects.equals(item.getQualityOfficerStatus(), Enums.EAuthStatus.APPROVAL.getVal())).findAny();
if (any.isPresent()) {
throw new ServiceException("质量员未审核");
}
}
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
job.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
job.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
job.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobService.save(job);
}
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.OutWork.getValue());
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (jobList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobOutWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
job.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobService.save(job);
}
@Override
public List<JobOutWork> listByJobId(JobOutWorkReq dto) {
return lambdaQuery().eq(JobOutWork::getJobId, dto.getJobId()).list();
}
}

View File

@ -0,0 +1,31 @@
package com.dite.znpt.service.job.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.resp.TurbineStatusResp;
import com.dite.znpt.mapper.JobInfoMapper;
import com.dite.znpt.service.job.JobService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class JobServiceImpl extends ServiceImpl<JobInfoMapper, JobInfo> implements JobService {
@Override
public List<JobInfo> page(JobInfoReq req) {
return lambdaQuery()
.eq(StrUtil.isNotEmpty(req.getJobCode()), JobInfo::getJobCode, req.getJobCode())
.eq(StrUtil.isNotEmpty(req.getProjectId()), JobInfo::getProjectId, req.getProjectId())
.eq(StrUtil.isNotEmpty(req.getCrewId()), JobInfo::getCrewId, req.getCrewId())
.eq(StrUtil.isNotEmpty(req.getConstructionPersonnelId()), JobInfo::getConstructionPersonnelId, req.getConstructionPersonnelId())
.list();
}
public List<TurbineStatusResp> calCrewStatus(List<String> crewIds) {
return baseMapper.calCrewStatus(crewIds);
}
}

View File

@ -0,0 +1,145 @@
package com.dite.znpt.service.job.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.context.UserContext;
import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.job.*;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobSummaryWorkReq;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.JobSummaryWorkMapper;
import com.dite.znpt.service.job.JobService;
import com.dite.znpt.service.job.JobSummaryWorkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = Exception.class)
public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper, JobSummaryWork> implements JobSummaryWorkService {
@Autowired
private CrewService crewService;
@Autowired
private JobService jobService;
@Override
public JobSummaryWork saveInfo(JobSummaryWork entity) {
if (StrUtil.isNotBlank(entity.getId())) {
JobSummaryWork oldEntity = this.getById(entity.getId());
if (!"0".equals(oldEntity.getStatus())) {
throw new ServiceException("内容已提交,不可修改");
}
}
saveOrUpdate(entity);
Job job = jobRepository.findByIdAndS(entity.getJobId(), 1);
crewService.updateStatusNew(job.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
job.setSubmitTime(new Date());
jobRepository.save(job);
}
return work;
}
/**
* 功能描述列表查询
*
* @param request 请求
* @return {@link List }<{@link JobSummaryWork }>
* @author cuizhibin
* @date 2023/11/02 13:28
**/
public List<JobSummaryWork> list(JobInfoReq request) {
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (!jobList.isEmpty()) {
List<String> statusList = ListUtil.of("1", "2", "3");
if (!Enums.ERoleCode.Builder.getName().equals(UserContext.getRoleCode())) {
statusList = ListUtil.of("2", "3");
}
List<String> jobIds = jobList.stream().map(Job::getId).collect(Collectors.toList());
Map<String, Job> jobId2Job = jobList.stream().collect(Collectors.toMap(Job::getId, i -> i));
List<JobSummaryWork> list = this.repository.findByJobIdInAndStatusIn(jobIds, statusList);
list.forEach(work -> {
Job job = jobId2Job.get(work.getJobId());
work.setConstructionPersonnel(job.getConstructionPersonnel());
work.setJobCode(job.getJobCode());
});
return list;
}
return new ArrayList<>();
}
/**
* 功能描述组长提交/项目经理审批
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void submit(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.SummaryWork.getValue());
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (jobList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobSummaryWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
job.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobRepository.save(job);
}
/**
* 功能描述组长驳回/项目经理驳回
*
* @param request 请求
* @author cuizhibin
* @date 2023/11/06 10:32
**/
public void reject(JobInfoReq request) {
request.setWorkType(Enums.EWorkType.SummaryWork.getValue());
List<JobInfo> jobList = jobService.list(QueryWrapperBuilder.build(request));
if (jobList.isEmpty()) {
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobSummaryWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
job.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobRepository.save(job);
}
@Override
public List<JobSummaryWork> listByJobId(JobSummaryWorkReq dto) {
return lambdaQuery().eq(JobSummaryWork::getJobId, dto.getJobId()).list();
}
}

View File

@ -0,0 +1,99 @@
<?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.dite.znpt.mapper.JobInfoMapper">
<sql id="Base_Column_List">
a.id, a.construction_personnel, a.construction_personnel_id, a.crew_id,
a.job_code, a.project_id, a.work_type, a.quality_officer_status,
a.safety_officer_status, a.status, a.submit_time, a.create_time,
a.create_by, a.update_time, a.update_by
</sql>
<select id="calCrewStatus" resultType="com.dite.znpt.domain.vo.job.resp.TurbineStatusResp">
select t.turbine_id as id,
<!--审核状态-->
(select
case when ifnull(sum(w.status = '3'), 0) > 0 then '3'
when ifnull(sum(w.status = '2'), 0) > 0 then '2'
when ifnull(sum(w.status = '1'), 0) > 0 then '1'
when p.work_type like '%in-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_in_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as in_work_status,
(select
case when ifnull(sum(w.status = '3'), 0) > 0 then '3'
when ifnull(sum(w.status = '2'), 0) > 0 then '2'
when ifnull(sum(w.status = '1'), 0) > 0 then '1'
when p.work_type like '%out-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_out_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as out_work_status,
(select
case when ifnull(sum(w.status = '3'), 0) > 0 then '3'
when ifnull(sum(w.status = '2'), 0) > 0 then '2'
when ifnull(sum(w.status = '1'), 0) > 0 then '1'
when p.work_type like '%lightning-protection-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_anti_thunder_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as anti_thunder_work_status,
(select
case when ifnull(sum(w.status = '3'), 0) > 0 then '3'
when ifnull(sum(w.status = '2'), 0) > 0 then '2'
when ifnull(sum(w.status = '1'), 0) > 0 then '1'
when p.work_type like '%summary-report%' then '0'
else '-1' end
from gaea_job j left join gaea_job_summary_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as summary_work_status,
<!--安全员审核态-->
(select
case when ifnull(sum(w.safety_officer_status = '1'), 0) > 0 then '1'
when p.work_type like '%in-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_in_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as in_work_safety_status,
(select
case when ifnull(sum(w.safety_officer_status = '1'), 0) > 0 then '1'
when p.work_type like '%out-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_out_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as out_work_safety_status,
(select
case when ifnull(sum(w.safety_officer_status = '1'), 0) > 0 then '1'
when p.work_type like '%lightning-protection-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_anti_thunder_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as anti_thunder_work_safety_status,
<!--质量员审核状态-->
(select
case when ifnull(sum(w.quality_officer_status = '1'), 0) > 0 then '1'
when p.work_type like '%in-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_in_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as in_work_quality_status,
(select
case when ifnull(sum(w.quality_officer_status = '1'), 0) > 0 then '1'
when p.work_type like '%out-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_out_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as out_work_quality_status,
(select
case when ifnull(sum(w.quality_officer_status = '1'), 0) > 0 then '1'
when p.work_type like '%lightning-protection-work%' then '0'
else '-1' end
from gaea_job j left join gaea_job_anti_thunder_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null) as anti_thunder_work_quality_status,
exists(select 1
from gaea_job j left join gaea_job_anti_thunder_work w on j.id = w.job_id
where j.crew_id = t.turbine_id and w.id is not null and lightning_unqualified = true) as lightning_unqualified_all
from turbine t
left join project p on t.project_id = p.project_id
where t.turbine_id in
<foreach collection="crewIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
group by t.turbine_id
</select>
</mapper>

View File

@ -0,0 +1,70 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.TableData;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.vo.job.req.JobAntiThunderWorkReq;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.job.JobAntiThunderWorkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @author Julio
* @date 2023/2/1 14:26
* @description 防雷工作
*/
@Api(tags = "防雷工作", description = "防雷工作")
@RestController
@RequestMapping("/job-no-man-work")
public class JobAntiThunderWorkController {
@Autowired
private JobAntiThunderWorkService service;
@PostMapping(value = "getWorkContent")
@ApiOperation(value = "根据jobId查询岗位内容未查到返回空对象")
@ResponseBody
public Result<JobAntiThunderWork> getJob(@Valid @RequestBody JobAntiThunderWorkReq dto) throws ServiceException {
List<JobAntiThunderWork> list = this.service.listByJobId(dto);
if (list.isEmpty()) {
return Result.ok(new JobAntiThunderWork());
}
return Result.ok(list.get(0));
}
@PostMapping(value = "save")
@ApiOperation(value = "新增或更新")
public Result<JobAntiThunderWork> save(@Valid @RequestBody JobAntiThunderWork work) {
return Result.okM(this.service.saveInfo(work), "保存成功");
}
@PostMapping("/list")
@ApiOperation(value = "查询列表,组长-施工人员")
public Result<TableData<JobAntiThunderWork>> list(@RequestBody JobInfoReq request) {
List<JobAntiThunderWork> list = this.service.list(request);
return Result.ok(new TableData<>(list, request.getPage(), request.getPageSize(), list.size()));
}
@PostMapping("/submit")
@ApiOperation(value = "组长提交/项目经理审批")
public Result<TableData<JobAntiThunderWork>> submit(@RequestBody JobInfoReq request) {
this.service.submit(request);
return Result.ok();
}
@PostMapping("/reject")
@ApiOperation(value = "组长驳回/项目经理驳回")
public Result<TableData<JobAntiThunderWork>> reject(@RequestBody JobInfoReq request) {
this.service.reject(request);
return Result.ok();
}
}

View File

@ -0,0 +1,39 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.job.JobService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @author Julio
* @date 2023/2/1 14:26
* @description 项目-机组-岗位
*/
@Api(tags = "项目-机组-岗位", description = "项目-机组-岗位")
@RestController
@RequestMapping("/job")
public class JobController {
@Autowired
private JobService jobService;
@PostMapping(value = "getJob")
@ApiOperation(value = "根据项目-机组-人员id查询岗位信息未查到返回null")
@ResponseBody
public Result<JobInfo> getJobInfo(@Valid @RequestBody JobInfoReq dto) throws ServiceException {
List<JobInfo> list = this.jobService.page(dto);
if (list.isEmpty()) {
return Result.ok();
}
return Result.ok(list.get(0));
}
}

View File

@ -0,0 +1,70 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.TableData;
import com.dite.znpt.domain.entity.job.JobAntiThunderWork;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.vo.job.req.JobInWorkReq;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.job.JobInWorkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @author Julio
* @date 2023/2/1 14:26
* @description 内部工作
*/
@Api(tags = "内部工作", description = "内部工作")
@RestController
@RequestMapping("/job-in-work")
public class JobInWorkController {
@Autowired
private JobInWorkService service;
@PostMapping(value = "getWorkContent")
@ApiOperation(value = "根据jobId查询岗位内容未查到返回空对象")
@ResponseBody
public Result<JobInWork> getJob(@Valid @RequestBody JobInWorkReq dto) throws ServiceException {
List<JobInWork> list = this.service.listByJobId(dto);
if (list.isEmpty()) {
return Result.ok(new JobInWork());
}
return Result.ok(list.get(0));
}
@PostMapping(value = "save")
@ApiOperation(value = "新增或更新")
public Result<JobInWork> save(@Valid @RequestBody JobInWork work) {
return Result.okM(this.service.saveInfo(work), "保存成功");
}
@PostMapping("/list")
@ApiOperation(value = "查询列表,组长-施工人员")
public Result<TableData<JobInWork>> list(@RequestBody JobInfoReq request) {
List<JobInWork> list = this.service.list(request);
return Result.ok(new TableData<>(list, request.getPage(), request.getPageSize(), list.size()));
}
@PostMapping("/submit")
@ApiOperation(value = "组长提交/项目经理审批")
public Result<TableData<JobInWork>> submit(@RequestBody JobInfoReq request) {
this.service.submit(request);
return Result.ok();
}
@PostMapping("/reject")
@ApiOperation(value = "组长驳回/项目经理驳回")
public Result<TableData<JobInWork>> reject(@RequestBody JobInfoReq request) {
this.service.reject(request);
return Result.ok();
}
}

View File

@ -0,0 +1,73 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.TableData;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.job.JobOutWorkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @author Julio
* @date 2023/2/1 14:26
* @description 外部工作
*/
@Api(tags = "外部工作", description = "外部工作")
@RestController
@RequestMapping("/job-out-work")
public class JobOutWorkController {
@Autowired
private JobOutWorkService service;
@PostMapping(value = "getWorkContent")
@ApiOperation(value = "根据jobId查询岗位内容未查到返回空对象")
@ResponseBody
public Result<JobOutWork> getJob(@Valid @RequestBody JobOutWorkReq dto) throws ServiceException {
List<JobOutWork> list = this.service.listByJobId(dto);
if (list.isEmpty()) {
return Result.ok(new JobOutWork());
}
return Result.ok(list.get(0));
}
@PostMapping(value = "save")
@ApiOperation(value = "新增或更新")
public Result<JobOutWork> save(@Valid @RequestBody JobOutWork work) {
return Result.okM(this.service.saveInfo(work), "保存成功");
}
@PostMapping("/list")
@ApiOperation(value = "查询列表,组长-施工人员")
public Result<TableData<JobOutWork>> list(@RequestBody JobInfoReq request) {
List<JobOutWork> list = this.service.list(request);
return Result.ok(new TableData<>(list, request.getPage(), request.getPageSize(), list.size()));
}
@PostMapping("/submit")
@ApiOperation(value = "组长提交/项目经理审批")
public Result<TableData<JobOutWork>> submit(@RequestBody JobInfoReq request) {
this.service.submit(request);
return Result.ok();
}
@PostMapping("/reject")
@ApiOperation(value = "组长驳回/项目经理驳回")
public Result<TableData<JobOutWork>> reject(@RequestBody JobInfoReq request) {
this.service.reject(request);
return Result.ok();
}
}

View File

@ -0,0 +1,74 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.TableData;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobSummaryWorkReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.job.JobOutWorkService;
import com.dite.znpt.service.job.JobSummaryWorkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @author Julio
* @date 2023/2/1 14:26
* @description 汇总报告
*/
@Api(tags = "汇总报告", description = "汇总报告")
@RestController
@RequestMapping("/job-summary-work")
public class JobSummaryWorkController {
@Autowired
private JobSummaryWorkService service;
@PostMapping(value = "getWorkContent")
@ApiOperation(value = "根据jobId查询岗位内容未查到返回空对象")
@ResponseBody
public Result<JobSummaryWork> getJob(@Valid @RequestBody JobSummaryWorkReq dto) throws ServiceException {
List<JobSummaryWork> list = this.service.listByJobId(dto);
if (list.isEmpty()) {
return Result.ok(new JobSummaryWork());
}
return Result.ok(list.get(0));
}
@PostMapping(value = "save")
@ApiOperation(value = "新增或更新")
public Result<JobSummaryWork> save(@Valid @RequestBody JobSummaryWork work) {
return Result.okM(this.service.saveInfo(work), "保存成功");
}
@PostMapping("/list")
@ApiOperation(value = "查询列表,组长-施工人员")
public Result<TableData<JobSummaryWork>> list(@RequestBody JobInfoReq request) {
List<JobSummaryWork> list = this.service.list(request);
return Result.ok(new TableData<>(list, request.getPage(), request.getPageSize(), list.size()));
}
@PostMapping("/submit")
@ApiOperation(value = "组长提交/项目经理审批")
public Result<TableData<JobSummaryWork>> submit(@RequestBody JobInfoReq request) {
this.service.submit(request);
return Result.ok();
}
@PostMapping("/reject")
@ApiOperation(value = "组长驳回/项目经理驳回")
public Result<TableData<JobSummaryWork>> reject(@RequestBody JobInfoReq request) {
this.service.reject(request);
return Result.ok();
}
}