Merge remote-tracking branch 'origin/jtdev' into jtdev
66 files modified
4 files added
| | |
| | | import org.springframework.security.authentication.BadCredentialsException; |
| | | import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException; |
| | | import org.springframework.security.oauth2.common.exceptions.UserDeniedAuthorizationException; |
| | | import org.springframework.util.Base64Utils; |
| | | |
| | | import java.util.Base64; |
| | | import java.util.Calendar; |
| | |
| | | return tokens[0]; |
| | | } |
| | | |
| | | private static String getHttpBasic(String clientId,String clientSecret) { |
| | | String string = clientId+":"+clientSecret; |
| | | byte[] encode = Base64Utils.encode(string.getBytes()); |
| | | return "Basic "+new String(encode); |
| | | } |
| | | |
| | | /** |
| | | * 获取token过期时间(次日凌晨3点) |
| | | * |
| | |
| | | import reactor.core.publisher.Mono; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Base64; |
| | | |
| | | /** |
| | | * 鉴权认证 |
| | |
| | | |
| | | @Override |
| | | public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { |
| | | |
| | | //校验 Token 放行 |
| | | String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange); |
| | | String path = exchange.getRequest().getURI().getPath(); |
| | |
| | | } |
| | | } |
| | | return chain.filter(exchange); |
| | | |
| | | |
| | | //校验 Token 放行 |
| | | // String originalRequestUrl = RequestProvider.getOriginalRequestUrl(exchange); |
| | | // String path = exchange.getRequest().getURI().getPath(); |
| | | // if (isSkip(originalRequestUrl)) { |
| | | // return chain.filter(exchange); |
| | | // } |
| | | // |
| | | // //校验 Token 合法性 |
| | | // ServerHttpResponse resp = exchange.getResponse(); |
| | | // String headerToken = exchange.getRequest().getHeaders().getFirst(AuthProvider.AUTH_KEY); |
| | | // String paramToken = exchange.getRequest().getQueryParams().getFirst(AuthProvider.AUTH_KEY); |
| | | // |
| | | // //校验 basic 放行 |
| | | // if (isSkip(path)) { |
| | | // String header = exchange.getRequest().getHeaders().getFirst("Authorization"); |
| | | // if (header == null || !header.startsWith("Basic")) { |
| | | // return unAuth(resp, "缺失令牌,鉴权失败"); |
| | | // } |
| | | // |
| | | // byte[] base64Token = header.substring(6).getBytes(); |
| | | // |
| | | // byte[] decoded; |
| | | // try { |
| | | // decoded = Base64.getDecoder().decode(base64Token); |
| | | // } catch (IllegalArgumentException var7) { |
| | | // return unAuth(resp, "缺失令牌,鉴权失败"); |
| | | // } |
| | | // String token = new String(decoded); |
| | | // int index = token.indexOf(":"); |
| | | // |
| | | // String[] tokens = new String[]{token.substring(0, index), token.substring(index + 1)}; |
| | | // if (tokens.length <= 0) { |
| | | // return unAuth(resp, "缺失令牌,鉴权失败"); |
| | | // } |
| | | // |
| | | // return chain.filter(exchange); |
| | | // } |
| | | // |
| | | // if (StringUtils.isBlank(headerToken) && StringUtils.isBlank(paramToken)) { |
| | | // return unAuth(resp, "缺失令牌,鉴权失败"); |
| | | // } |
| | | // String auth = StringUtils.isBlank(headerToken) ? paramToken : headerToken; |
| | | // String token = JwtUtil.getToken(auth); |
| | | // Claims claims = JwtUtil.parseJWT(token); |
| | | // if (token == null || claims == null) { |
| | | // return unAuth(resp, "请求未授权"); |
| | | // } |
| | | // //判断 Token 状态 |
| | | // if (jwtProperties.getState()) { |
| | | // String tenantId = String.valueOf(claims.get(TokenConstant.TENANT_ID)); |
| | | // String userId = String.valueOf(claims.get(TokenConstant.USER_ID)); |
| | | // String accessToken = JwtUtil.getAccessToken(tenantId, userId, token); |
| | | // if (!token.equalsIgnoreCase(accessToken)) { |
| | | // return unAuth(resp, "令牌已失效"); |
| | | // } |
| | | // } |
| | | // return chain.filter(exchange); |
| | | } |
| | | |
| | | private boolean isSkip(String path) { |
| | | return AuthProvider.getDefaultSkipUrl().stream().anyMatch(pattern -> antPathMatcher.match(pattern, path)) |
| | | || authProperties.getSkipUrl().stream().anyMatch(pattern -> antPathMatcher.match(pattern, path)) |
| | | || authProperties.getAuth().stream().anyMatch(auth -> antPathMatcher.match(auth.getPattern(), path)) |
| | | || authProperties.getBasic().stream().anyMatch(basic -> antPathMatcher.match(basic.getPattern(), path)) |
| | | || authProperties.getAuth().stream().anyMatch(auth -> antPathMatcher.match(auth.getPattern(), path)) |
| | | || authProperties.getBasic().stream().anyMatch(basic -> antPathMatcher.match(basic.getPattern(), path)) |
| | | || authProperties.getSign().stream().anyMatch(sign -> antPathMatcher.match(sign.getPattern(), path)); |
| | | } |
| | | |
| | |
| | | DEFAULT_SKIP_URL.add("/manager/check-upload"); |
| | | DEFAULT_SKIP_URL.add("/error/**"); |
| | | DEFAULT_SKIP_URL.add("/assets/**"); |
| | | DEFAULT_SKIP_URL.add("/sjztmd/**/**"); |
| | | DEFAULT_SKIP_URL.add("/simulate/**"); |
| | | DEFAULT_SKIP_URL.add("/app/manage/getLastInfo"); |
| | | DEFAULT_SKIP_URL.add("/app/manage/getMiniProgramPath"); |
| | | DEFAULT_SKIP_URL.add("/oauth/wxLogin"); |
| | | DEFAULT_SKIP_URL.add("/oauth/tokenLogin/**"); |
| | | DEFAULT_SKIP_URL.add("/sms/sms/sendCode"); |
| | | |
| | | DEFAULT_SKIP_URL.add("/hk/hk/queryHkPreviewUrlCommon"); |
| | | DEFAULT_SKIP_URL.add("/hk/hk/handleCameraPosition"); |
| | | DEFAULT_SKIP_URL.add("/hk/hk/presetsSearchesUrls"); |
| | | DEFAULT_SKIP_URL.add("/hk/hk/presetsAddition"); |
| | | DEFAULT_SKIP_URL.add("/hk/hk/presetsDeletion"); |
| | | DEFAULT_SKIP_URL.add("/hk/hk/talkURLs"); |
| | | // DEFAULT_SKIP_URL.add("/sjztmd/**/**"); |
| | | // DEFAULT_SKIP_URL.add("/simulate/**"); |
| | | // DEFAULT_SKIP_URL.add("/app/manage/getLastInfo"); |
| | | // DEFAULT_SKIP_URL.add("/app/manage/getMiniProgramPath"); |
| | | // DEFAULT_SKIP_URL.add("/oauth/wxLogin"); |
| | | // DEFAULT_SKIP_URL.add("/oauth/tokenLogin/**"); |
| | | // DEFAULT_SKIP_URL.add("/sms/sms/sendCode"); |
| | | // |
| | | // DEFAULT_SKIP_URL.add("/hk/hk/queryHkPreviewUrlCommon"); |
| | | // DEFAULT_SKIP_URL.add("/hk/hk/handleCameraPosition"); |
| | | // DEFAULT_SKIP_URL.add("/hk/hk/presetsSearchesUrls"); |
| | | // DEFAULT_SKIP_URL.add("/hk/hk/presetsAddition"); |
| | | // DEFAULT_SKIP_URL.add("/hk/hk/presetsDeletion"); |
| | | // DEFAULT_SKIP_URL.add("/hk/hk/talkURLs"); |
| | | } |
| | | |
| | | /** |
| | |
| | | private String templateId; |
| | | |
| | | /** |
| | | * 模板表ID (合并内容发送模板) |
| | | */ |
| | | private String mergeTemplateId; |
| | | |
| | | /** |
| | | * 备注 |
| | | */ |
| | | private String alarmRemark; |
| | |
| | | |
| | | private Integer status; |
| | | |
| | | /** |
| | | * 价格 |
| | | */ |
| | | private String price; |
| | | |
| | | } |
| | |
| | | */ |
| | | @TableField(exist = false) |
| | | private String resubmitId; |
| | | |
| | | |
| | | |
| | | @TableField(exist = false) |
| | | private List<String> userIDs; |
| | | |
| | | |
| | | |
| | | @TableField(exist = false) |
| | | private String controlUnit; |
| | | |
| | | @TableField(exist = false) |
| | | private String selfUnit; |
| | | |
| | | @TableField(exist = false) |
| | | private String countryUnit; |
| | | |
| | | @TableField(exist = false) |
| | | private String countyCd; |
| | | |
| | | @TableField(exist = false) |
| | | private List<String> xbUnitIDs; |
| | | } |
| | |
| | | |
| | | private Integer status; |
| | | |
| | | @TableField(exist = false) |
| | | private String projectProgress; |
| | | |
| | | @TableField(exist = false) |
| | |
| | | */ |
| | | private String lot; |
| | | |
| | | |
| | | /** |
| | | * 表面变形 |
| | | */ |
| | | private int surfaceNum; |
| | | private String surfaceProgress; |
| | | |
| | | /** |
| | | * 视频 |
| | | */ |
| | | private int videoNum; |
| | | private String videoProgress; |
| | | |
| | | /** |
| | | * 渗流压力 |
| | | */ |
| | | private int transNum; |
| | | private String transProgress; |
| | | |
| | | /** |
| | | * 渗流量 |
| | | */ |
| | | private int seepageNum; |
| | | private String seepageProgress; |
| | | |
| | | /** |
| | | * 水库注册码 |
| | | */ |
| | | @TableField(exist = false) |
| | | private String othRegCd; |
| | | |
| | | /** |
| | | * 设备价格排序 |
| | | */ |
| | | @TableField(exist = false) |
| | | private String price; |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | private Long userId; |
| | | |
| | | /** |
| | | |
| | | /** |
| | | * 角色ID |
| | | */ |
| | | private Long roleId; |
| | | @TableField(exist = false) |
| | | private String roleName; |
| | | |
| | | |
| | | /** |
| | | * 审批状态 0未审批 1通过,2驳回 |
| | | */ |
| | | private Integer approvalStatus; |
| | |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | @NoArgsConstructor |
| | | @Builder |
| | | public class ProjectSearchDTO { |
| | | /** |
| | | * 项目名称 |
| | | */ |
| | | private String projectName; |
| | | /** |
| | | * 区域编码 |
| | | */ |
| | | private String adCode; |
| | | /** |
| | | * 设备名 |
| | | */ |
| | | private String deviceName; |
| | | /** |
| | | * 水库名 |
| | | */ |
| | | private String skName; |
| | | /** |
| | | * 工序类型 |
| | | */ |
| | | private String gxType; |
| | | private String typeName; |
| | | /** |
| | | * 工序名 |
| | | */ |
| | | private String gxName; |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | private String createUser; |
| | | /** |
| | | * 用户名 |
| | | */ |
| | | private Long userId; |
| | | |
| | | /** |
| | | * 用户所在单位 |
| | | */ |
| | | private List<String> userUnit; |
| | | |
| | | /** |
| | | * 县单位位 |
| | | */ |
| | | private List<String> countryUnit; |
| | | private List<String> selfUnit; |
| | | /** |
| | | * 设备施工单位 |
| | | */ |
| | | private List<String> sgUnit; |
| | | |
| | | /** |
| | | * 用户角色 |
| | | */ |
| | | private Long roleUnit; |
| | | /** |
| | | * |
| | | */ |
| | | private String gxInfoId; |
| | | /** |
| | | * |
| | | */ |
| | | private String gxStepNum; |
| | | /** |
| | | * |
| | | */ |
| | | private String projectId; |
| | | /** |
| | | * |
| | | */ |
| | | private Integer approvalStatus; |
| | | /** |
| | | * |
| | | */ |
| | | private Integer status; |
| | | /** |
| | | * |
| | | */ |
| | | private Long reportPerson; |
| | | /** |
| | | * |
| | | */ |
| | | private List<Long> projectIds; |
| | | /** |
| | | * |
| | | */ |
| | | private String startTime; |
| | | /** |
| | | * |
| | | */ |
| | | private String endTime; |
| | | /** |
| | | * 工程规模 |
| | |
| | | */ |
| | | private String reportTime; |
| | | |
| | | /** |
| | | * 标段 |
| | | */ |
| | | private String lot; |
| | | |
| | | |
| | | /** |
| | | * 项目排序 0状态 , 1进度 ,2注册码 |
| | | */ |
| | | private Integer projectSort; |
| | | private String auditPerson; |
| | | |
| | | private Boolean isPage; |
| | | private List<String> sgCodeS; |
| | | |
| | | /** |
| | | * 建设期次 |
| | | */ |
| | | private String buildStage; |
| | | |
| | | /** |
| | | * 子类型 |
| | | */ |
| | | private List<String> childTypeList; |
| | | |
| | | /** |
| | | * 部门ID |
| | | */ |
| | | private String deptId; |
| | | |
| | | /** |
| | | * 是否单位过滤 1不过滤 |
| | | */ |
| | | private Integer isUnit; |
| | | /** |
| | | * 施工单位 |
| | | */ |
| | | // private String selfUnit; |
| | | |
| | | } |
| | |
| | | package cn.gistack.sm.sg.DTO; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | /** |
| | | * 施工设备查询类 |
| | | */ |
| | | @Data |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | @Builder |
| | | public class SgDeviceSearchDTO { |
| | | private String deviceName; |
| | | private String deviceType; |
| | |
| | | public class PtypeVO { |
| | | private String pTypeName; |
| | | private String pTypeProgress; |
| | | private Integer sort; |
| | | private List<SgTypeVO> sgTypeVOS; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sg.VO; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 水库实体类 |
| | | */ |
| | | @Data |
| | | public class ResVO { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | private String guid; |
| | | /** |
| | | * 市 |
| | | */ |
| | | private String cityNm; |
| | | |
| | | /** |
| | | * 县 |
| | | */ |
| | | private String countyNm; |
| | | /** |
| | | * 水库 |
| | | */ |
| | | private String resNm; |
| | | /** |
| | | * 注册登记号 |
| | | */ |
| | | private String othRegCd; |
| | | /** |
| | | * 工程规模 |
| | | */ |
| | | private String engScal; |
| | | |
| | | /** |
| | | * 乡镇 |
| | | */ |
| | | private String townNm; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sg.VO; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class SgAllDeptOrUser { |
| | | private Long id; |
| | | private String name; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sg.VO; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 设备类型开工率VO |
| | | */ |
| | | @Data |
| | | public class SgOperatingRateVO { |
| | | /** |
| | | * 表面变形 |
| | | */ |
| | | private int surfaceNum; |
| | | private int surfaceStartNum; |
| | | private String surfaceProgress; |
| | | |
| | | /** |
| | | * 视频 |
| | | */ |
| | | private int videoNum; |
| | | private int videoStartNum; |
| | | private String videoProgress; |
| | | |
| | | /** |
| | | * 渗流压力 |
| | | */ |
| | | private int transNum; |
| | | private int transStartNum; |
| | | private String transProgress; |
| | | |
| | | /** |
| | | * 渗流量 |
| | | */ |
| | | private int seepageNum; |
| | | private int seepageStartNum; |
| | | private String seepageProgress; |
| | | private String proIds; |
| | | } |
| | |
| | | private Integer approvalStatus; |
| | | |
| | | private String stepRemark; |
| | | |
| | | |
| | | } |
| | |
| | | private String Ptype; |
| | | private String PtypeName; |
| | | private Integer resubmit; |
| | | private Integer sort; |
| | | private Integer dSort; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sg.VO; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 项目树实体类 |
| | | */ |
| | | @Data |
| | | public class SgProjectTreeVO { |
| | | /** |
| | | * id |
| | | */ |
| | | private String id; |
| | | |
| | | /** |
| | | * 层级 |
| | | */ |
| | | private Integer level; |
| | | |
| | | /** |
| | | * 片区 |
| | | */ |
| | | private String lot; |
| | | |
| | | /** |
| | | * 省 |
| | | */ |
| | | private String provinceNm; |
| | | /** |
| | | * 市 |
| | | */ |
| | | private String cityNm; |
| | | |
| | | /** |
| | | * 县 |
| | | */ |
| | | private String countyNm; |
| | | |
| | | /** |
| | | * 乡镇 |
| | | */ |
| | | private String townNm; |
| | | |
| | | /** |
| | | * 水库名 |
| | | */ |
| | | private String resNm; |
| | | |
| | | /** |
| | | * 子级水库数量 |
| | | */ |
| | | private Long childNum; |
| | | |
| | | /** |
| | | * 项目ID集合 |
| | | */ |
| | | private List<String> projectIds; |
| | | |
| | | /** |
| | | * 子列表 |
| | | */ |
| | | List<SgProjectTreeVO> childList; |
| | | |
| | | /** |
| | | * 名称 |
| | | */ |
| | | private String regionName; |
| | | } |
| | |
| | | * 表面变形 |
| | | */ |
| | | private int surfaceNum; |
| | | private int surfaceStartNum; |
| | | private String surfaceProgress; |
| | | |
| | | /** |
| | | * 视频 |
| | | */ |
| | | private int videoNum; |
| | | private int videoStartNum; |
| | | private String videoProgress; |
| | | |
| | | /** |
| | | * 渗流压力 |
| | | */ |
| | | private int transNum; |
| | | private int transStartNum; |
| | | private String transProgress; |
| | | |
| | | /** |
| | | * 渗流量 |
| | | */ |
| | | private int seepageNum; |
| | | private int seepageStartNum; |
| | | private String seepageProgress; |
| | | |
| | | private String proIds; |
| | | /** |
| | | * 建设期次 |
| | | */ |
| | | private String buildStage; |
| | | |
| | | } |
| | | |
| | |
| | | private String typeName; |
| | | private String typeProgress; |
| | | private String progress; |
| | | private Integer sort; |
| | | private List<SgDeviceDO> deviceDOS; |
| | | } |
| | |
| | | @ApiModelProperty(value = "工程区划") |
| | | private String sgCode; |
| | | |
| | | /** |
| | | * 片区 所属标段 |
| | | */ |
| | | @ApiModelProperty(value = "片区 所属标段") |
| | | private String precinct; |
| | | |
| | | private String adGrad; |
| | | |
| | | private String resGuid; |
| | |
| | | */ |
| | | private String deptCategoryName; |
| | | |
| | | private String sgCode; |
| | | /** |
| | | * 片区 所属标段 |
| | | */ |
| | | private String precinct; |
| | | |
| | | } |
| | |
| | | }}; |
| | | |
| | | /** |
| | | * 6.1水位初次超汛限告警-合并水库 |
| | | */ |
| | | public static List<String> waterFirstOverMergeWaterList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | | * 7.水位小幅超汛限告警 |
| | | */ |
| | | public static List<String> waterSmallScaleOverList = new ArrayList<String>() |
| | |
| | | add("over_1h"); |
| | | add("over_z"); |
| | | add("flse_lim_stag"); |
| | | }}; |
| | | |
| | | /** |
| | | * 7.1水位小幅超汛限告警-合并 |
| | | */ |
| | | public static List<String> waterSmallScaleOverMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | |
| | | }}; |
| | | |
| | | /** |
| | | * 10.1 水位超设计洪水位告警处理-合并 |
| | | */ |
| | | public static List<String> waterMoreDesignMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | | * 11 水位超校核洪水位告警 |
| | | */ |
| | | public static List<String> waterMoreCheckList = new ArrayList<String>() |
| | |
| | | add("over_chec_fl_stag"); |
| | | add("diff_dam"); |
| | | add("drp_24"); |
| | | }}; |
| | | |
| | | /** |
| | | * 11.1 水位超校核洪水位告警-合并 |
| | | */ |
| | | public static List<String> waterMoreCheckMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | |
| | | }}; |
| | | |
| | | /** |
| | | * 12.1 近1h水位陡升-合并 |
| | | */ |
| | | public static List<String> waterComeOneHourUpMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | | * 13 近1h水位陡降 |
| | | */ |
| | | public static List<String> waterComeOneHourDownList = new ArrayList<String>() |
| | |
| | | add("rz"); |
| | | add("over_1h"); |
| | | add("drp_24"); |
| | | }}; |
| | | |
| | | /** |
| | | * 13.1 近1h水位陡降-合并 |
| | | */ |
| | | public static List<String> waterComeOneHourDownMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | |
| | | }}; |
| | | |
| | | /** |
| | | * 15.1 已降大雨告警-合并 |
| | | */ |
| | | public static List<String> alreadyHeavyRainMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | | * 16 已降暴雨告警 |
| | | */ |
| | | public static List<String> alreadyRainstormList = new ArrayList<String>() |
| | |
| | | }}; |
| | | |
| | | /** |
| | | * 16.1 已降暴雨告警合并 |
| | | */ |
| | | public static List<String> alreadyRainstormMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | | * 18 6小时降雨告警 |
| | | */ |
| | | public static List<String> sixHourRainList = new ArrayList<String>() |
| | |
| | | add("rz"); |
| | | }}; |
| | | |
| | | |
| | | /** |
| | | * 18.1 6小时降雨告警-合并 |
| | | */ |
| | | public static List<String> sixHourRainMergeList = new ArrayList<String>() |
| | | {{ |
| | | add("county_nm,town_nm,res_nm,1"); |
| | | }}; |
| | | |
| | | /** |
| | | * 19.坝安全监测告警-数据缺失 |
| | | */ |
| | |
| | | String uuid = alarmRuleDetail.getTemplateId() + UUID.randomUUID().toString(); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = noticeHandle.getSendSmsTemplate(ztData, alarmRule, alarmRuleDetail, columnList, flag, adCode, uuid, isSendStation); |
| | | = noticeHandle.getSendSmsTemplate(ztData, alarmRule, alarmRuleDetail, columnList, ZtApiDataColumnConstant.waterFirstOverMergeWaterList,flag, adCode, uuid, isSendStation); |
| | | // 拼接后面内容 |
| | | if (smsRequestTemplate.getPersonVOList().size() > 0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次拼接巡查责任人,技术责任人姓名 |
| | | noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("水位:{}\n汛限水位:{}米\n超汛限水位:{}米\n", |
| | | list.get(9), list.get(11), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(11))) |
| | | ); |
| | | list.remove(11); |
| | | // String remark = StringUtil.format("水位:{}\n汛限水位:{}米\n超汛限水位:{}米\n", |
| | | // list.get(9), list.get(11), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(11))) |
| | | // ); |
| | | // list.remove(11); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | if (smsRequestTemplate.getPersonVOList().size() > 0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次拼接巡查责任人,技术责任人姓名 |
| | | noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("水位:{}\n汛限水位:{}米\n超汛限水位:{}米\n", |
| | | list.get(9), list.get(12), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(12))) |
| | | ); |
| | | list.remove(12); |
| | | // String remark = StringUtil.format("水位:{}\n汛限水位:{}米\n超汛限水位:{}米\n", |
| | | // list.get(9), list.get(12), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(12))) |
| | | // ); |
| | | // list.remove(12); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | if (smsRequestTemplate.getPersonVOList().size() > 0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次拼接巡查责任人,技术责任人姓名联系电话 |
| | | noticeHandle.addPatrolTechnologyInfo(list, true); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, true); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | // noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("水位:{}\n汛限水位:{}米\n超汛限水位:{}米\n", |
| | | list.get(9), list.get(12), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(12))) |
| | | ); |
| | | list.remove(12); |
| | | // String remark = StringUtil.format("水位:{}\n汛限水位:{}米\n超汛限水位:{}米\n", |
| | | // list.get(9), list.get(12), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(12))) |
| | | // ); |
| | | // list.remove(12); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | |
| | | |
| | | String remark = StringUtil.format("水位:{}\n设计洪水位:{}米\n超设计洪水位:{}米\n", |
| | | list.get(9), list.get(13), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(13))) |
| | | ); |
| | | list.remove(13); |
| | | // String remark = StringUtil.format("水位:{}\n设计洪水位:{}米\n超设计洪水位:{}米\n", |
| | | // list.get(9), list.get(13), String.format("%.2f", Double.valueOf(list.get(9).replace("米", "")) - Double.valueOf(list.get(13))) |
| | | // ); |
| | | // list.remove(13); |
| | | |
| | | // System.out.println(remark); |
| | | // 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息(姓名,联系电话) |
| | | noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5"); |
| | | // noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5"); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | |
| | | // 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息(姓名,联系电话) |
| | | noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5"); |
| | | // noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5"); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("水位:{}\n校核洪水位:{}米\n{}米\n", |
| | | list.get(9), list.get(10), list.get(11) |
| | | ); |
| | | // String remark = StringUtil.format("水位:{}\n校核洪水位:{}米\n{}米\n", |
| | | // list.get(9), list.get(10), list.get(11) |
| | | // ); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | if (smsRequestTemplate.getPersonVOList().size() > 0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次添加行巡查责任人,技术责任人信息(姓名) |
| | | noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // // 依次添加行巡查责任人,技术责任人信息,主管部门责任人(姓名) |
| | | // noticeHandle.addPatrolTechnologyInfoNew(list, false); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("近1h水位陡升:{}\n", |
| | | list.get(10) |
| | | ); |
| | | // String remark = StringUtil.format("近1h水位陡升:{}\n", |
| | | // list.get(10) |
| | | // ); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | |
| | | // 依次添加行巡查责任人,技术责任人信息(姓名) |
| | | noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("近1h水位陡降:{}\n", |
| | | list.get(10) |
| | | ); |
| | | // String remark = StringUtil.format("近1h水位陡降:{}\n", |
| | | // list.get(10) |
| | | // ); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | |
| | | // 依次添加巡查责任人技术责任人信息姓名 |
| | | noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = list.get(9); |
| | | // String remark = list.get(9); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | |
| | | // 依次添加巡查责任人技术责任人信息姓名 |
| | | noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // noticeHandle.addPatrolTechnologyInfo(list, false); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = list.get(9); |
| | | // String remark = list.get(9); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | // 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息(姓名,联系电话) |
| | | // noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5"); |
| | | // 主管部门责任人,技术责任人,巡查责任人信息 2024-05-29修改 |
| | | noticeHandle.addWaterMoreDesignPatrolTechnologyInfoNew(list, "2,4,5"); |
| | | // noticeHandle.addWaterMoreDesignPatrolTechnologyInfoNew(list, "2,4,5"); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | |
| | | String remark = StringUtil.format("降雨:{}\n", |
| | | list.get(6) + "毫米" |
| | | ); |
| | | // String remark = StringUtil.format("降雨:{}\n", |
| | | // list.get(6) + "毫米" |
| | | // ); |
| | | |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, null); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | * |
| | | * @param alarmRule 告警规则 |
| | | * @param alarmRuleDetail 告警规则详情 |
| | | * @param ztData 中台数据 |
| | | * @param data 中台数据 |
| | | * @param columnList 需要展示的数据字段 |
| | | * @param flag 是否显示日期 |
| | | * @param adCode 行政区划 |
| | |
| | | import com.google.common.collect.Lists; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | |
| | | if (null != smsTemplate) { |
| | | // 创建消息发送对象 |
| | | SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate(); |
| | | // 通过模板id 查询模板相关信息(外呼对应的模板id则为场景id) |
| | | SmsTemplate mergeSmsTemplate |
| | | = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("id", alarmRuleDetail.getMergeTemplateId()).eq("is_deleted", 0)); |
| | | if (null!=mergeSmsTemplate){ |
| | | smsRequestTemplate.setSmsTemplateMerge(mergeSmsTemplate); |
| | | } |
| | | // 设置是否发送站内信 |
| | | smsRequestTemplate.setIsSendStation(isSendStation); |
| | | // 设置告警信息 |
| | |
| | | // 解析模板并设置 title |
| | | smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent())); |
| | | // 列名数据转换 |
| | | getColumnData(jsonArray, columnsList, smsRequestTemplate, alarmRuleDetail, flag, adCode, uuid); |
| | | getColumnData(jsonArray, columnsList,null, smsRequestTemplate, alarmRuleDetail, flag, adCode, uuid); |
| | | //返回 |
| | | return smsRequestTemplate; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 短信发送数据组装(包含了合并水库名称) |
| | | * |
| | | * @param jsonArray 告警动态数据 |
| | | * @param alarmRule 告警规则信息 |
| | | * @param alarmRuleDetail 告警规则详情信息 |
| | | * @param columnsList 列名集合信息 |
| | | * @param mergeColumnsList 合并列名集合信息(合并水库名称) |
| | | * @param flag 是否包含日期 |
| | | * @param adCode 行政区编号(是否过滤区县数据) |
| | | * @param uuid 本次执行临时编号 |
| | | * @param isSendStation 是否发送站内信 |
| | | * @return |
| | | */ |
| | | public SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray, |
| | | AlarmRule alarmRule, |
| | | AlarmRuleDetail alarmRuleDetail, |
| | | List<String> columnsList, |
| | | List<String> mergeColumnsList, |
| | | Boolean flag, |
| | | String adCode, |
| | | String uuid, |
| | | Boolean isSendStation) { |
| | | // 通过模板id 查询模板相关信息(外呼对应的模板id则为场景id) |
| | | SmsTemplate smsTemplate |
| | | = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("id", alarmRuleDetail.getTemplateId()).eq("is_deleted", 0)); |
| | | if (null != smsTemplate) { |
| | | // 创建消息发送对象 |
| | | SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate(); |
| | | // 设置是否发送站内信 |
| | | smsRequestTemplate.setIsSendStation(isSendStation); |
| | | // 设置告警信息 |
| | | smsRequestTemplate.setAlarmRule(alarmRule); |
| | | // 设置模板信息 |
| | | smsRequestTemplate.setSmsTemplate(smsTemplate); |
| | | // 解析模板并设置 title |
| | | smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent())); |
| | | // 列名数据转换 |
| | | getColumnData(jsonArray, columnsList, mergeColumnsList, smsRequestTemplate, alarmRuleDetail, flag, adCode, uuid); |
| | | //返回 |
| | | return smsRequestTemplate; |
| | | } |
| | |
| | | */ |
| | | private void getColumnData(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | List<String> mergeColumnsList, |
| | | SmsRequestTemplate smsRequestTemplate, |
| | | AlarmRuleDetail alarmRuleDetail, |
| | | Boolean flag, |
| | |
| | | List<PersonVO> personLists = new ArrayList<>(); |
| | | // 告警内容 |
| | | List<List<String>> lists = new ArrayList<>(); |
| | | // 合并告警内容集合 |
| | | List<List<String>> moreLists = new ArrayList<>(); |
| | | // 创建set对象用于去重处理 |
| | | Set<String> set = new HashSet<>(); |
| | | |
| | | // 查询对应的角色信息 |
| | | List<String> roles = sysClient.getRoleNames(alarmRuleDetail.getAlarmPerson()).getData(); |
| | | |
| | | // 遍历处理数据 |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | if (null != adCode) { |
| | | // city_cd,county_cd 过滤数据 |
| | | String county_cd = jsonArray.getJSONObject(i).getString("county_cd"); |
| | | if (null != county_cd && county_cd.equals(adCode)) { |
| | | // jointData(jsonArray, columnsList, alarmRuleDetail, flag, personLists, lists, i,uuid,set); |
| | | jointDataV2(jsonArray, columnsList, alarmRuleDetail, roles, flag, personLists, lists, i, uuid, set); |
| | | jointDataV2(jsonArray, columnsList,mergeColumnsList, alarmRuleDetail, roles, flag, personLists, lists,moreLists, i, uuid, set); |
| | | } |
| | | } else { |
| | | // jointData(jsonArray, columnsList, alarmRuleDetail, flag, personLists, lists, i,uuid,set); |
| | | jointDataV2(jsonArray, columnsList, alarmRuleDetail, roles, flag, personLists, lists, i, uuid, set); |
| | | jointDataV2(jsonArray, columnsList,mergeColumnsList, alarmRuleDetail, roles, flag, personLists, lists,moreLists, i, uuid, set); |
| | | } |
| | | } |
| | | // 设置信息 |
| | | smsRequestTemplate.setPersonVOList(personLists); |
| | | smsRequestTemplate.setTemplateContent(lists); |
| | | smsRequestTemplate.setTemplateMergeContent(moreLists); |
| | | } |
| | | |
| | | private void jointDataV2(JSONArray jsonArray, List<String> columnsList, AlarmRuleDetail alarmRuleDetail, List<String> roles, Boolean flag, List<PersonVO> personLists, List<List<String>> lists, int i, String uuid, Set<String> set) { |
| | | /** |
| | | * 设置合并数据 |
| | | * @param jsonArray 告警动态数据 |
| | | * @param columnsList 告警动态内容 key |
| | | * @param alarmRuleDetail 告警人员角色ids |
| | | * @param flag 告警内容是否日期 |
| | | * @param personLists 人员集合 |
| | | * @param lists 告警内容集合 |
| | | * @param i 遍历集合的索引 |
| | | * @param uuid uuid |
| | | * @param set 用于去重 |
| | | */ |
| | | private void jointDataV2(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | List<String> mergeColumnsList, |
| | | AlarmRuleDetail alarmRuleDetail, |
| | | List<String> roles, |
| | | Boolean flag, |
| | | List<PersonVO> personLists, |
| | | List<List<String>> lists, |
| | | List<List<String>> moreLists, |
| | | int i, |
| | | String uuid, |
| | | Set<String> set) { |
| | | // 根据水库编号,所在区域查询需要发送的人员手机号及设置 |
| | | JSONObject jsonObject = jsonArray.getJSONObject(i); |
| | | String res_cd = jsonObject.getString("res_cd"); |
| | | String res_nm = jsonObject.getString("res_nm"); |
| | | String town_nm = jsonObject.getString("town_nm"); |
| | | String county_nm = jsonObject.getString("county_nm"); |
| | | String city_nm = jsonObject.getString("city_nm"); |
| | | log.info("当前为第{}个水库,行政区划:{}-{}-{},水库编码:{},水库名称:{}", i + 1, city_nm, county_nm, town_nm, res_cd, res_nm); |
| | | // 取出测站编码 |
| | | // String stcd = jsonArray.getJSONObject(i).getString("stcd"); |
| | | // if (StringUtil.isBlank(stcd)) { |
| | | // stcd = jsonArray.getJSONObject(i).getString("cd"); |
| | | // } |
| | | // //如果stcd是空的就设置为-1 |
| | | // if (StringUtil.isBlank(stcd)){ |
| | | // stcd = "-1"; |
| | | // } |
| | | |
| | | log.info("当前为第{}个水库,行政区划:{}-{}-{},水库编码:{},水库名称:{}", i + 1, |
| | | jsonObject.getString("city_nm"), jsonObject.getString("county_nm"), jsonObject.getString("town_nm"), res_cd, jsonObject.getString("res_nm")); |
| | | // 设置临时字符串,用于去重判断 |
| | | String tempStr = uuid + res_cd; |
| | | // 去重水库操作,如果有重复的水库则不操作 |
| | | if (!set.contains(tempStr)) { |
| | | set.add(tempStr); |
| | | String stcd = jsonArray.getJSONObject(i).getString("stcd"); |
| | | if (StringUtil.isBlank(stcd)) { |
| | | stcd = jsonArray.getJSONObject(i).getString("rain_stcd"); |
| | | } |
| | | if (StringUtil.isBlank(stcd)) { |
| | | stcd = jsonArray.getJSONObject(i).getString("cd"); |
| | | } |
| | | //如果stcd是空的就设置为-1 |
| | | if (StringUtil.isBlank(stcd)){ |
| | | stcd = "-1"; |
| | | } |
| | | // 判断时间是否存在 |
| | | String tm = jsonArray.getJSONObject(i).getString("tm"); |
| | | String day = ""; |
| | | String hour = ""; |
| | | String minute = ""; |
| | | if (null != tm && !tm.equals("") && flag) { |
| | | //如果显示日期,并且中台的日期不为空,则使用中台的日期 |
| | | flag = true; |
| | | // 加入天,时,分 |
| | | day = tm.substring(8, 10); |
| | | hour = tm.substring(11, 13); |
| | | minute = tm.substring(14, 16); |
| | | } else if (flag) { |
| | | //如果显示日期,但是中台没传日期,就使用当前时间 |
| | | Date now = DateUtil.now(); |
| | | String formatTm = DateUtil.format(now, DateUtil.PATTERN_DATETIME); |
| | | // 加入天,时,分 |
| | | day = formatTm.substring(8, 10); |
| | | hour = formatTm.substring(11, 13); |
| | | minute = formatTm.substring(14, 16); |
| | | } else { |
| | | flag = false; |
| | | } |
| | | // 获取告警人员信息 |
| | | // getAlarmPersonList(jsonArray, columnsList, alarmRuleDetail,flag, personLists, lists, i, res_cd, day, hour, minute, stcd); |
| | | JSONObject jsonData = jsonArray.getJSONObject(i); |
| | | //这里把jsonObject传过去 |
| | | getAlarmPersonListV2(jsonArray, columnsList, alarmRuleDetail, roles, flag, personLists, lists, i, res_cd, day, hour, minute, stcd,jsonData); |
| | | } |
| | | |
| | | } |
| | | |
| | | private void getAlarmPersonListV2(JSONArray jsonArray, List<String> columnsList, AlarmRuleDetail alarmRuleDetail, List<String> roles, Boolean flag, List<PersonVO> personLists, List<List<String>> lists, int i, String res_cd, String day, String hour, String minute, String stcd,JSONObject jsonData) { |
| | | // 查询告警人员信息 |
| | | // List<PersonVO> personVOList = getPersonListByResGuid(res_cd, alarmRuleDetail.getAlarmPerson()); |
| | | List<PersonVO> personVOList = getPersonListByResGuidV2(res_cd, roles); |
| | | if (personVOList.size() > 0) { |
| | | List<PersonVO> personVOList = getPersonListByResGuidV2(res_cd, roles); |
| | | // 按发送人员手机号进行告警内容数据拼接 |
| | | for (PersonVO personVO : personVOList) { |
| | | // 处理重复发送手机号,跳出本次循环,直接进行下一次循环 |
| | | if (!isAdd(lists, res_cd, personVO)){ |
| | | break; |
| | | } |
| | | // 开始拼接内容 |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(stcd); |
| | | // 测站编号处理 |
| | | stcdHandle(jsonArray, i, list); |
| | | // 加入水库编号、手机号 |
| | | list.add(res_cd); |
| | | list.add(personVO.getPhone()); |
| | | |
| | | //拿测点值 |
| | | String val = ""; |
| | | JSONObject jsonObject = jsonArray.getJSONObject(i); |
| | | val = jsonObject.getString("monitorData"); |
| | | list.add(val); |
| | | if (flag) { |
| | | // 如果是电话告警,需要把日期拼到一起 |
| | | if (alarmRuleDetail.getAlarmMode().equals("电话")) { |
| | | String tem = day + "日" + hour + "时" + minute + "分"; |
| | | list.add(tem); |
| | | } else { |
| | | list.add(day); |
| | | list.add(hour); |
| | | list.add(minute); |
| | | } |
| | | list.add(Strings.isBlank(jsonObject.getString("monitorData"))?"":jsonObject.getString("monitorData")); |
| | | //日期处理 |
| | | flag = timeHandle(jsonArray, alarmRuleDetail, flag, i, list); |
| | | // 合并水库名称 |
| | | boolean isMerge = Strings.isBlank(alarmRuleDetail.getMergeTemplateId())? |
| | | mergeResName(jsonArray, columnsList,lists, i, personVO,list.size()): |
| | | mergeResName(jsonArray,list, mergeColumnsList,lists,moreLists, i, personVO,list.size()); |
| | | if (isMerge){ |
| | | break; |
| | | } |
| | | // 最后动态将变量将值放入集合中 |
| | | for (String column : columnsList) { |
| | | String[] split = column.split(","); |
| | | String format = ""; |
| | | format = addAlarmContent(jsonArray,i,split,format); |
| | | // 加入集合 |
| | | list.add(format); |
| | | } |
| | | // 加入告警内容集合 |
| | | lists.add(list); |
| | | } |
| | | personLists.addAll(personVOList); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 日期处理 |
| | | * @param jsonArray |
| | | * @param alarmRuleDetail |
| | | * @param flag |
| | | * @param i |
| | | * @param list |
| | | * @return |
| | | */ |
| | | @NotNull |
| | | private Boolean timeHandle(JSONArray jsonArray, AlarmRuleDetail alarmRuleDetail, Boolean flag, int i, List<String> list) { |
| | | // 判断时间是否存在 |
| | | String tm = jsonArray.getJSONObject(i).getString("tm"); |
| | | String day = ""; |
| | | String hour = ""; |
| | | String minute = ""; |
| | | if (!Strings.isBlank(tm) && flag) { |
| | | //如果显示日期,并且中台的日期不为空,则使用中台的日期 |
| | | flag = true; |
| | | // 加入天,时,分 |
| | | day = tm.substring(8, 10); |
| | | hour = tm.substring(11, 13); |
| | | minute = tm.substring(14, 16); |
| | | } else if (flag) { |
| | | //如果显示日期,但是中台没传日期,就使用当前时间 |
| | | Date now = DateUtil.now(); |
| | | String formatTm = DateUtil.format(now, DateUtil.PATTERN_DATETIME); |
| | | // 加入天,时,分 |
| | | day = formatTm.substring(8, 10); |
| | | hour = formatTm.substring(11, 13); |
| | | minute = formatTm.substring(14, 16); |
| | | } else { |
| | | flag = false; |
| | | } |
| | | if (flag) { |
| | | // 如果是电话告警,需要把日期拼到一起 |
| | | if (alarmRuleDetail.getAlarmMode().equals("电话")) { |
| | | String tem = day + "日" + hour + "时" + minute + "分"; |
| | | list.add(tem); |
| | | } else { |
| | | list.add(day); |
| | | list.add(hour); |
| | | list.add(minute); |
| | | } |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | | * 测站编号处理 |
| | | * @param jsonArray |
| | | * @param i |
| | | * @param list |
| | | */ |
| | | private void stcdHandle(JSONArray jsonArray, int i, List<String> list) { |
| | | String stcd = jsonArray.getJSONObject(i).getString("stcd"); |
| | | if (StringUtil.isBlank(stcd)) { |
| | | stcd = jsonArray.getJSONObject(i).getString("rain_stcd"); |
| | | } |
| | | if (StringUtil.isBlank(stcd)) { |
| | | stcd = jsonArray.getJSONObject(i).getString("cd"); |
| | | } |
| | | //如果stcd是空的就设置为-1 |
| | | if (StringUtil.isBlank(stcd)){ |
| | | stcd = "-1"; |
| | | } |
| | | list.add(stcd); |
| | | } |
| | | |
| | | /** |
| | | * 如果存在一个人对应水库有重复的则不新增 |
| | | * @param lists |
| | | * @param res_cd |
| | | * @param personVO |
| | | * @return |
| | | */ |
| | | private boolean isAdd(List<List<String>> lists, String res_cd, PersonVO personVO) { |
| | | boolean isAdd = true; |
| | | for (List<String> listStr : lists) { |
| | | // 如果水库编号和手机号都一致,则不新增 |
| | | if (listStr.contains(res_cd) && listStr.contains(personVO.getPhone())) { |
| | | isAdd = false; |
| | | break; |
| | | } |
| | | } |
| | | return isAdd; |
| | | } |
| | | |
| | | /** |
| | | * 合并水库名称内容 |
| | | * @param jsonArray 告警数据 |
| | | * @param columnsList 告警列 |
| | | * @param lists 告警内容 |
| | | * @param i 集合索引 |
| | | * @param personVO 人员信息 |
| | | * @param index 索引 |
| | | * @return |
| | | */ |
| | | private boolean mergeResName(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | List<List<String>> lists, |
| | | int i, |
| | | PersonVO personVO, |
| | | int index) { |
| | | boolean isMerge = false; |
| | | for (List<String> listStr : lists) { |
| | | // 如果告警人员已经存在,则需要按规则判断是否合并水库名称,将当前人员告警内容中的水库名称合并 |
| | | if (listStr.contains(personVO.getPhone())) { |
| | | isMerge = true; |
| | | // 判断合并的水库名称是否超过3个,超过3个则不在合并,直接舍弃 |
| | | String resNames = listStr.get(index); |
| | | int length = resNames.split("、").length; |
| | | if (length>2){ |
| | | break; |
| | | } |
| | | // 变量将值放入集合中 |
| | | for (String column : columnsList) { |
| | | String[] split = column.split(","); |
| | | String format = ""; |
| | | // 内容处理 |
| | | format = addAlarmContent(jsonArray, i, split, format); |
| | | // format = addAlarmContentV2(jsonData,split,format); |
| | | // 加入集合 |
| | | list.add(format); |
| | | } |
| | | //处理重复发送手机号 |
| | | boolean isAdd = true; |
| | | for (List<String> listStr : lists) { |
| | | if (listStr.contains(res_cd) && listStr.contains(personVO.getPhone())) { |
| | | isAdd = false; |
| | | break; |
| | | String lastString = split[split.length-1]; |
| | | if (lastString.equals("1")) { |
| | | // 需要合并数据,目前只会合并乡镇水库名称,其他情况不处理 |
| | | for (String s : split) { |
| | | // 乡镇水库拼接 |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | format = format.replaceAll("null",""); |
| | | // 合并水库名称信息,2個以上拼接等 |
| | | if (length==2){ |
| | | listStr.set(index,listStr.get(index) + "、" + format + "等"); |
| | | }else { |
| | | listStr.set(index, listStr.get(index) + "、" + format); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (isAdd) |
| | | lists.add(list); |
| | | break; |
| | | } |
| | | } |
| | | personLists.addAll(personVOList); |
| | | return isMerge; |
| | | } |
| | | |
| | | /** |
| | | * 合并水库名称内容--暂不启用 |
| | | * @param jsonArray 告警数据 |
| | | * @param list 当前告警内容 |
| | | * @param columnsList 告警列(合并) |
| | | * @param lists 告警内容 |
| | | * @param moreLists 合并告警内容 |
| | | * @param i 集合索引 |
| | | * @param personVO 人员信息 |
| | | * @param index 索引 |
| | | * @return |
| | | */ |
| | | private boolean mergeResName(JSONArray jsonArray, |
| | | List<String> list, |
| | | List<String> columnsList, |
| | | List<List<String>> lists, |
| | | List<List<String>> moreLists, |
| | | int i, |
| | | PersonVO personVO, |
| | | int index) { |
| | | boolean isMerge = false; |
| | | for (List<String> listStr : lists) { |
| | | // 如果告警人员已经存在,则需要按规则判断是否合并水库名称,将当前人员告警内容中的水库名称合并 |
| | | if (listStr.contains(personVO.getPhone())) { |
| | | isMerge = true; |
| | | // 判断合并的水库名称是否超过3个,超过3个则不在合并,直接舍弃 |
| | | String resNames = listStr.get(index); |
| | | int length = resNames.split("、").length; |
| | | if (length>2){ |
| | | break; |
| | | } |
| | | // 变量将值放入集合中 |
| | | for (String column : columnsList) { |
| | | String[] split = column.split(","); |
| | | String format = ""; |
| | | String lastString = split[split.length-1]; |
| | | if (lastString.equals("1")) { |
| | | // 需要合并数据,目前只会合并乡镇水库名称,其他情况不处理 |
| | | for (String s : split) { |
| | | // 乡镇水库拼接 |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | format = format.replaceAll("null",""); |
| | | // 合并水库名称信息,2個以上拼接等 |
| | | if (length==2){ |
| | | list.add(listStr.get(index) + "、" + format + "等"); |
| | | }else { |
| | | list.add(listStr.get(index) + "、" + format); |
| | | } |
| | | } |
| | | } |
| | | // 加入合并的集合 |
| | | moreLists.add(list); |
| | | break; |
| | | } |
| | | } |
| | | return isMerge; |
| | | } |
| | | |
| | | private List<PersonVO> getPersonListByResGuidV2(String res_cd, List<String> roles) { |
| | |
| | | * @return |
| | | */ |
| | | private String addAlarmContent(JSONArray jsonArray, int i, String[] split, String format) { |
| | | // 无需合并数据 |
| | | for (String s : split) { |
| | | // 超汛限水位 |
| | | if (s.equals("over_z")) { |
| | |
| | | } else { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | format = format.replaceAll("null",""); |
| | | } |
| | | // 返回 |
| | | return format; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 告警内容拼接处理 |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, false); |
| | | asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterFirstOverMergeWaterList, true, adCode, false); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (alarmRuleDetailList.size() > 0) { |
| | | // 遍历 |
| | | if (alarmRuleDetailList.get(0).getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterSmallScaleOverHandle1(alarmRule, alarmRuleDetailList.get(0), ztData, ZtApiDataColumnConstant.waterSmallScaleOverList, true, adCode, false, uuid); |
| | | asyncNoticeHandle.waterSmallScaleOverHandle1(alarmRule, alarmRuleDetailList.get(0), ztData, ZtApiDataColumnConstant.waterSmallScaleOverMergeList, true, adCode, false, uuid); |
| | | } |
| | | if (alarmRuleDetailList.get(1).getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterSmallScaleOverHandle2(alarmRule, alarmRuleDetailList.get(1), ztData, ZtApiDataColumnConstant.waterSmallScaleOverList, true, adCode, false, uuid); |
| | | asyncNoticeHandle.waterSmallScaleOverHandle2(alarmRule, alarmRuleDetailList.get(1), ztData, ZtApiDataColumnConstant.waterSmallScaleOverMergeList, true, adCode, false, uuid); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterMoreDesignHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterMoreDesignList, true, adCode, false, uuid); |
| | | asyncNoticeHandle.waterMoreDesignHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterMoreDesignMergeList, true, adCode, false, uuid); |
| | | } |
| | | // if (alarmRuleDetail.getAlarmMode().equals("电话") && isTimeSend()) { |
| | | // asyncNoticeHandle.outCallHandleCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterMoreDesignList,true, adCode, false,uuid); |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterMoreCheckHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterMoreCheckList, true, adCode, false, uuid); |
| | | asyncNoticeHandle.waterMoreCheckHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterMoreCheckMergeList, true, adCode, false, uuid); |
| | | } |
| | | // if (alarmRuleDetail.getAlarmMode().equals("电话") && isTimeSend()) { |
| | | // asyncNoticeHandle.outCallHandleCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.waterMoreCheckList,true, adCode, false,uuid); |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterComeOneHourUpHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterComeOneHourUpList, true, adCode, false, uuid); |
| | | asyncNoticeHandle.waterComeOneHourUpHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterComeOneHourUpMergeList, true, adCode, false, uuid); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterComeOneHourDownHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterComeOneHourDownList, true, adCode, false, uuid); |
| | | asyncNoticeHandle.waterComeOneHourDownHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterComeOneHourDownMergeList, true, adCode, false, uuid); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.alreadyHeavyRainHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.alreadyHeavyRainList, false, adCode, false); |
| | | asyncNoticeHandle.alreadyHeavyRainHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.alreadyHeavyRainMergeList, false, adCode, false); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.alreadyRainstormHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.alreadyRainstormList, false, adCode, false); |
| | | asyncNoticeHandle.alreadyRainstormHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.alreadyRainstormMergeList, false, adCode, false); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.sixHourRainHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.sixHourRainList, false, adCode, false, uuid); |
| | | asyncNoticeHandle.sixHourRainHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.sixHourRainMergeList, false, adCode, false, uuid); |
| | | } |
| | | // if (alarmRuleDetail.getAlarmMode().equals("电话") && isTimeSend()) { |
| | | // asyncNoticeHandle.outCallHandleCall(alarmRule, alarmRuleDetail, ztData,ZtApiDataColumnConstant.sixHourRainList,true, adCode, false,uuid); |
| | |
| | | //左右岸方向 |
| | | Double dnVal = jsonObject.getDouble("dn_val"); |
| | | //垂直 |
| | | Double duValue = jsonObject.getDouble("垂直位移"); |
| | | Double duValue = jsonObject.getDouble("du_value"); |
| | | |
| | | String direction = ""; |
| | | String val = ""; |
| | |
| | | @Override |
| | | public Map<String, Object> sendSignMsg(SmsRequestTemplate smsRequestTemplate) { |
| | | // 取出数据 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate(); |
| | | request.setTemplateId(smsTemplate.getTemplateId()); |
| | | // 合并 |
| | | SmsTemplate smsTemplateMerge = smsRequestTemplate.getSmsTemplateMerge(); |
| | | // 告警内容 |
| | | List<List<String>> templateContent = smsRequestTemplate.getTemplateContent(); |
| | | // 合并水库告警内容 |
| | | List<List<String>> templateTemplateMergeContent = smsRequestTemplate.getTemplateMergeContent(); |
| | | // 获取告警规则 |
| | | AlarmRule alarmRule = smsRequestTemplate.getAlarmRule(); |
| | | // 是否同时发送站内信 |
| | | Boolean isSendStation = false; |
| | | if (null!=smsRequestTemplate.getIsSendStation()){ |
| | | isSendStation = smsRequestTemplate.getIsSendStation(); |
| | | } |
| | | // 判断 templateContent 个数,个数超过1000 需要分段发送短信 |
| | | List<List<List<String>>> lists = Lists.partition(templateContent, 1000); |
| | | int number = 0; |
| | | for (List<List<String>> list : lists) { |
| | | // 临时保存告警记录用 |
| | | List<List<String>> templateList = getAlarmList(list); |
| | | // 批量发送短信 |
| | | Map<String, Object> map = batchSendAlertsSms(smsRequestTemplate.getSmsTemplate(), list); |
| | | int count = Integer.parseInt(map.get("errCount").toString()); |
| | | ComResult<DynSMSSendDataResult> resultComResult =(ComResult<DynSMSSendDataResult>) map.get("resultComResult"); |
| | | // 保存短信结果记录 |
| | | SmsResult smsResult = saveSendResult(alarmRule.getId(),resultComResult.getCode().toString(),resultComResult.getMsg(),request, list.size() - count); |
| | | // 保存详情记录(短信详情,告警详情) |
| | | List<SmsRecord> smsRecordList = saveAlertsAndSmsDetail(smsResult,resultComResult,smsRequestTemplate.getSmsTemplate(), |
| | | templateList,request,smsRequestTemplate.getAlarmRule(),isSendStation); |
| | | // number 累加 |
| | | number += smsRecordList.size(); |
| | | } |
| | | // 设置返回数据 |
| | | Map<String, Object> params = new HashMap<>(1); |
| | | params.put("sendNumber",number); |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | // 发送消息处理 |
| | | Map<String, Object> params = sendSmsReturnStringObjectMap(smsTemplate, templateContent, alarmRule, isSendStation); |
| | | // 发送合并水库消息处理 |
| | | Map<String, Object> mergeParams = sendSmsReturnStringObjectMap(smsTemplateMerge, templateTemplateMergeContent, alarmRule, isSendStation); |
| | | // 合并返回数据 |
| | | map.put("oneMap",params); |
| | | map.put("moreMap",mergeParams); |
| | | // 返回 |
| | | return params; |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 发送消息处理 |
| | | * @param smsTemplate |
| | | * @param templateContent |
| | | * @param alarmRule |
| | | * @param isSendStation |
| | | * @return |
| | | */ |
| | | @NotNull |
| | | private Map<String, Object> sendSmsReturnStringObjectMap(SmsTemplate smsTemplate, |
| | | List<List<String>> templateContent, |
| | | AlarmRule alarmRule, |
| | | Boolean isSendStation) { |
| | | if (null!=smsTemplate) { |
| | | // 取出数据 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setTemplateId(smsTemplate.getTemplateId()); |
| | | // 判断 templateContent 个数,个数超过1000 需要分段发送短信 |
| | | List<List<List<String>>> lists = Lists.partition(templateContent, 1000); |
| | | int number = 0; |
| | | for (List<List<String>> list : lists) { |
| | | // 临时保存告警记录用 |
| | | List<List<String>> templateList = getAlarmList(list); |
| | | // 批量发送短信 |
| | | Map<String, Object> map = batchSendAlertsSms(smsTemplate, list); |
| | | int count = Integer.parseInt(map.get("errCount").toString()); |
| | | ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>) map.get("resultComResult"); |
| | | // 保存短信结果记录 |
| | | SmsResult smsResult = saveSendResult(alarmRule.getId(), resultComResult.getCode().toString(), resultComResult.getMsg(), request, list.size() - count); |
| | | // 保存详情记录(短信详情,告警详情) |
| | | List<SmsRecord> smsRecordList = saveAlertsAndSmsDetail(smsResult, resultComResult, smsTemplate, |
| | | templateList, request, alarmRule, isSendStation); |
| | | // number 累加 |
| | | number += smsRecordList.size(); |
| | | } |
| | | // 设置返回数据 |
| | | Map<String, Object> params = new HashMap<>(1); |
| | | params.put("sendNumber", number); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | private List<List<String>> templateContent; |
| | | |
| | | |
| | | /** |
| | | * 合并内容(短信内容)--临时 |
| | | */ |
| | | private List<List<String>> templateMergeContent; |
| | | |
| | | /** |
| | | * 类型 1:遍历发送 2:批量发送(一次发多个) |
| | | */ |
| | |
| | | private SmsTemplate smsTemplate; |
| | | |
| | | /** |
| | | * 短信模板对象信息(合并的模板) |
| | | */ |
| | | private SmsTemplate smsTemplateMerge; |
| | | |
| | | /** |
| | | * 是否发送站内信 |
| | | */ |
| | | private Boolean isSendStation; |
| | |
| | | */ |
| | | @DS("zt") |
| | | List<Map<String, String>> getResInfo(@Param("list") List<String> resGuidList); |
| | | |
| | | /** |
| | | * 按水库编号查询水库是否为2022高标准 |
| | | * @param res_cd |
| | | * @return |
| | | */ |
| | | @DS("zt") |
| | | String getResInfoBy2022(@Param("resCd") String res_cd); |
| | | } |
| | |
| | | ) |
| | | </select> |
| | | |
| | | <!--按水库编号查询水库是否为2022高标准--> |
| | | <select id="getResInfoBy2022" resultType="java.lang.String"> |
| | | select a."guid" from SJZT_MD."att_res_base" a where a."label" like '%2022高标准%' and a."guid" = #{resCd} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | JSONObject jsonObject = ztData.getJSONObject(i); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | // 水库信息设置 |
| | | flag = waterInfoSet(jsonObject, map,flag); |
| | | flag = waterInfoSet(jsonObject, map); |
| | | if (flag) { |
| | | // 测点信息设置 |
| | | flag = pointValueInfoSet(jsonObject, map, type,flag); |
| | |
| | | if (flag) { |
| | | map.put("batchId",UUID.randomUUID()); |
| | | map.put("serialNo",getSerialNo()); |
| | | log.info("发送数据:{}",map); |
| | | // 发送请求 |
| | | String response = sendPostJsonRequest(OpenApiConstant.POINT_VALUE_INLET_URL, map); |
| | | JSONObject parseObject = JSON.parseObject(response); |
| | |
| | | * @param jsonObject |
| | | * @param map |
| | | */ |
| | | private boolean waterInfoSet(JSONObject jsonObject, Map<String, Object> map,boolean flag) { |
| | | private boolean waterInfoSet(JSONObject jsonObject, Map<String, Object> map) { |
| | | String rz = jsonObject.getString("rz"); |
| | | flag = false; |
| | | if (!Strings.isBlank(rz)) { |
| | | flag = true; |
| | | String res_cd = replaceSpecialStr(jsonObject.getString("res_cd")); |
| | | List<Map<String, Object>> waterLevelInfoList = new ArrayList<>(); |
| | | Map<String, Object> waterLevelInfoMap = new HashMap<>(); |
| | | waterLevelInfoMap.put("damCode", res_cd); |
| | | waterLevelInfoMap.put("waterLevel", jsonObject.getString("rz")); |
| | | waterLevelInfoMap.put("waterLevelTime", jsonObject.getString("rz_tm")); |
| | | waterLevelInfoMap.put("rainCondition", jsonObject.getString("drp")); |
| | | waterLevelInfoMap.put("rainConditionTime", jsonObject.getString("drp_tm")); |
| | | waterLevelInfoList.add(waterLevelInfoMap); |
| | | map.put("waterLevelInfo", waterLevelInfoList); |
| | | if(Strings.isBlank(rz)){ |
| | | return false; |
| | | } |
| | | return flag; |
| | | // 需要过滤2022高标准水库才发送 |
| | | String res_cd = replaceSpecialStr(jsonObject.getString("res_cd")); |
| | | String flag = openApiMapper.getResInfoBy2022(res_cd); |
| | | if (Strings.isBlank(flag)){ |
| | | return false; |
| | | } |
| | | List<Map<String, Object>> waterLevelInfoList = new ArrayList<>(); |
| | | Map<String, Object> waterLevelInfoMap = new HashMap<>(); |
| | | waterLevelInfoMap.put("damCode", res_cd); |
| | | waterLevelInfoMap.put("waterLevel", jsonObject.getString("rz")); |
| | | waterLevelInfoMap.put("waterLevelTime", jsonObject.getString("rz_tm")); |
| | | waterLevelInfoMap.put("rainCondition", jsonObject.getString("drp")); |
| | | waterLevelInfoMap.put("rainConditionTime", jsonObject.getString("drp_tm")); |
| | | waterLevelInfoList.add(waterLevelInfoMap); |
| | | map.put("waterLevelInfo", waterLevelInfoList); |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | |
| | | import cn.gistack.sm.reportFlood.entity.ReportFloodRecord; |
| | | import cn.gistack.sm.reportFlood.service.IReportFloodRecordService; |
| | | import cn.gistack.sm.reportFlood.vo.ReportFloodRecordVO; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | private IReportFloodRecordService reportFloodRecordService; |
| | | private IFlowClient flowClient; |
| | | |
| | | |
| | | @GetMapping(value = "/isExistByTime") |
| | | public R isExistByTime(String reservoirId,String time) { |
| | | QueryWrapper queryWrapper = new QueryWrapper(); |
| | | queryWrapper.eq("reservoir_id" ,reservoirId); |
| | | queryWrapper.eq("report_time" ,time); |
| | | return R.data(reportFloodRecordService.count(queryWrapper) > 0); |
| | | } |
| | | |
| | | /** |
| | | * 分页列表查询 |
| | | */ |
| | |
| | | |
| | | import cn.gistack.sm.sg.DO.SgProjectInfoDO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.SgProjectInfoVO; |
| | | import cn.gistack.sm.sg.VO.SgStatisProVO; |
| | | import cn.gistack.sm.sg.VO.SgStatistccVO; |
| | | import cn.gistack.sm.sg.VO.SgStatisticsVO; |
| | | import cn.gistack.sm.sg.VO.*; |
| | | import cn.gistack.sm.sg.excel.ProjectExcel; |
| | | import cn.gistack.sm.sg.excel.ProjectImport; |
| | | import cn.gistack.sm.sg.service.SgProjectInfoService; |
| | | import cn.gistack.sm.sjztmd.entity.AttResBase; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springblade.core.boot.ctrl.BladeController; |
| | |
| | | Query query = new Query(); |
| | | query.setCurrent(searchDTO.getCurrent()); |
| | | query.setSize(searchDTO.getSize()); |
| | | IPage<SgProjectInfoDO> page = sgProjectInfoService.queryPageList(Condition.getPage(query), searchDTO); |
| | | Object page = sgProjectInfoService.queryPageList(Condition.getPage(query), searchDTO); |
| | | return R.data(page); |
| | | } |
| | | |
| | |
| | | @PostMapping("add") |
| | | public R add(@RequestBody SgProjectInfoDO sgProjectInfoDO) { |
| | | sgProjectInfoService.save(sgProjectInfoDO); |
| | | return R.success("新增成功"); |
| | | return R.data(sgProjectInfoDO); |
| | | } |
| | | |
| | | /** |
| | | * 新增项目 |
| | | * 修改项目 |
| | | */ |
| | | @PostMapping("update") |
| | | public R update(@RequestBody SgProjectInfoDO sgProjectInfoDO) { |
| | | sgProjectInfoService.updateById(sgProjectInfoDO); |
| | | return R.success("修改成功"); |
| | | } |
| | | |
| | | /** |
| | | * 项目树 |
| | | */ |
| | | @GetMapping("project_tree") |
| | | public R projectTree(ProjectSearchDTO dto) { |
| | | List<SgProjectTreeVO> tree = sgProjectInfoService.projectTree(dto); |
| | | return R.data(tree); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 水库列表 |
| | | */ |
| | | @GetMapping("res_list") |
| | | public R resList(ProjectSearchDTO dto,Query query) { |
| | | IPage<ResVO> page= sgProjectInfoService.resList(Condition.getPage(query),dto); |
| | | return R.data(page); |
| | | } |
| | | |
| | | /** |
| | | * 删除项目 |
| | | */ |
| | | @PostMapping("delete") |
| | | public R delete(@RequestParam(name="ids",required=true) String ids) { |
| | | sgProjectInfoService.delete(ids); |
| | | return R.success("删除成功"); |
| | | } |
| | | } |
| | |
| | | <if test="dto.deviceType != null and dto.deviceType != ''"> |
| | | and ds.device_type = #{dto.deviceType} |
| | | </if> |
| | | order by dict.sort, TO_NUMBER (ds.price) asc NULLS LAST |
| | | </select> |
| | | <select id="getSgDeviceById" resultType="cn.gistack.sm.sg.DO.SgDeviceDO"> |
| | | select ds.*,project.project_name as programName,dict."DICT_VALUE" as typeName from YWXT."SG_DEVICE" as ds left join YWXT."SG_PROJECT_INFO" as project on ds.program_id=project.id |
| | |
| | | SgGxDO selectByGxType(@Param("gxType") String gxType); |
| | | |
| | | SgGxVO getById(@Param("id") Long id); |
| | | |
| | | List<String> childType(@Param("gxType") String gxType); |
| | | } |
| | |
| | | <mapper namespace="cn.gistack.sm.sg.mapper.SgGxMapper"> |
| | | |
| | | <select id="queryPageList" resultType="cn.gistack.sm.sg.VO.SgGxVO"> |
| | | select * from YWXT.SG_GX gx where 1=1 and GX_TYPE not in('sgzb','sgys') |
| | | select * from YWXT.SG_GX gx where 1=1 and GX_TYPE not in('cldw','sgys') |
| | | <if test="dto.gxType != null and dto.gxType != ''"> |
| | | and gx.gx_type LIKE CONCAT('%', #{dto.gxType}, '%') |
| | | and gx.gx_type = #{dto.gxType} |
| | | <if test="dto.childTypeList != null and !dto.childTypeList.isEmpty()"> |
| | | or gx.gx_type in |
| | | <foreach collection="dto.childTypeList" open="(" close=")" separator="," item="id"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | </if> |
| | | <if test="dto.gxName != null and dto.gxName != ''"> |
| | | and gx.gx_name LIKE CONCAT('%', #{dto.gxName}, '%') |
| | |
| | | <select id="getById" resultType="cn.gistack.sm.sg.VO.SgGxVO"> |
| | | select * from YWXT.SG_GX where id = #{id} |
| | | </select> |
| | | <select id="childType" resultType="java.lang.String"> |
| | | select dict_key from "YWXT"."BLADE_DICT_BIZ" where parent_id = (select id from "YWXT"."BLADE_DICT_BIZ" where dict_key = #{gxType}); |
| | | </select> |
| | | </mapper> |
| | |
| | | <select id="getDEviceGXtwo" resultType="cn.gistack.sm.sg.DO.SgGxStepDO"> |
| | | select step.*,GX.GX_TYPE from YWXT.SG_GX_STEP step left join YWXT.SG_GX GX ON step.GX_INFO_ID = GX.ID |
| | | where |
| | | GX.GX_TYPE in ('sgzb','sgys') order by id asc |
| | | GX.GX_TYPE in ('cldw','sgys') order by id asc |
| | | |
| | | </select> |
| | | <select id="queryStepLists" resultType="cn.gistack.sm.sg.DO.SgGxStepDO"> |
| | |
| | | Long selectProframId(Long deviceId); |
| | | |
| | | List<SgReportUserDO> selectProcessUserByProjectId(@Param("programId") Long programId); |
| | | |
| | | List<Map<String, Object>> getRoleByIds(@Param("ids")List<Long> rids); |
| | | |
| | | List<Long> getSgEngineerRole(); |
| | | |
| | | List<Map<String, Object>> getUserByIdsCounty(@Param("ids") List<Long> ids); |
| | | } |
| | |
| | | <if test="dto.endTime != null and dto.endTime !='' "> |
| | | and report.report_time <= #{dto.endTime} |
| | | </if> |
| | | order by report_time desc |
| | | </select> |
| | | |
| | | <select id="queryPageListAll" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> |
| | |
| | | report.*, |
| | | de.device_name, |
| | | de.device_type, |
| | | dict."DICT_VALUE" as typeName |
| | | dict."DICT_VALUE" as typeName, si.control_unit,si.self_unit,dria."county_cd" |
| | | FROM |
| | | ywxt.SG_PROGRESS_REPORT report |
| | | LEFT JOIN ywxt.SG_PROJECT_INFO si ON report.profram_id = si.id |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = si.sk_id |
| | | LEFT JOIN ywxt.sg_device de ON report.gx_device_id = de.id |
| | | left join YWXT."BLADE_DICT_BIZ" as dict on de.device_type=dict.DICT_KEY and dict.CODE='SG_DEVICE_TYPE' |
| | | where 1=1 and report."STATUS" != 4 |
| | |
| | | <if test="dto.endTime != null and dto.endTime != ''"> |
| | | and report.create_time <= #{dto.endTime} |
| | | </if> |
| | | <if test="dto.typeName != null and dto.typeName != ''"> |
| | | and dict.DICT_KEY = #{dto.typeName} |
| | | <if test="dto.childTypeList != null and !dto.childTypeList.isEmpty()"> |
| | | or dict.DICT_KEY in |
| | | <foreach collection="dto.childTypeList" open="(" close=")" separator="," item="id"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | </if> |
| | | order by report.report_time desc |
| | | </select> |
| | | |
| | | <select id="queryById" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> |
| | | select * from SG_PROGRESS_REPORT report where id = #{id} |
| | | select report.*,si.control_unit,si.self_unit,dria."county_cd" from SG_PROGRESS_REPORT report LEFT JOIN ywxt.SG_PROJECT_INFO si ON report.profram_id = si.id |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = si.sk_id where report.id = #{id} |
| | | </select> |
| | | <select id="queryList" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> |
| | | SELECT distinct |
| | |
| | | DBMS_LOB.SUBSTR(report.video_urls) videoUrls, |
| | | de.device_name, |
| | | de.device_type, |
| | | <!-- userR.approval_status, --> |
| | | dict."DICT_VALUE" as typeName |
| | | MAX(userR.approval_status) as approval_status, |
| | | dict."DICT_VALUE" as typeName, |
| | | si.control_unit,si.self_unit,dria."county_cd" |
| | | FROM |
| | | ywxt.SG_PROGRESS_REPORT report |
| | | LEFT JOIN ywxt.SG_PROJECT_INFO si ON report.profram_id = si.id |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = si.sk_id |
| | | LEFT JOIN ywxt.sg_device de ON report.gx_device_id = de.id |
| | | left join YWXT."BLADE_DICT_BIZ" as dict on de.device_type=dict.DICT_KEY and dict.CODE='SG_DEVICE_TYPE' |
| | | LEFT JOIN ywxt.sg_report_user userR ON report.id = userR.report_id |
| | | WHERE |
| | | 1 = 1 and report."STATUS" != 4 |
| | | <if test="dto.selfUnit != null and dto.selfUnit.size>0"> |
| | | and |
| | | <foreach collection="dto.selfUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | si.CONSTRUCTION_UNIT Like CONCAT(CONCAT('%', #{item}), '%') or si.SELF_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.userUnit != null and dto.userUnit.size>0"> |
| | | and |
| | | <foreach collection="dto.userUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | si.CONTROL_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.countryUnit != null and dto.countryUnit.size>0"> |
| | | and dria."county_cd" in |
| | | <foreach collection="dto.countryUnit" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.roleUnit != null and dto.roleUnit != ''"> |
| | | and userR.role_id=#{dto.roleUnit} |
| | | </if> |
| | | <!-- AND userR.is_his = 0 --> |
| | | <if test="dto.projectName != null and dto.projectName != ''"> |
| | | and report.PROGRAM_NAME like CONCAT(CONCAT('%',#{dto.projectName}),'%') |
| | |
| | | and userR.user_id = #{dto.userId} and userR.approval_order != 0 |
| | | </if> |
| | | <if test="dto.approvalStatus != null and dto.approvalStatus ==0"> |
| | | and userR.approval_status = 0 and report.audit_person = #{dto.auditPerson} and (report."STATUS" = 0 or report."STATUS" = 1) |
| | | and userR.approval_status = 0 and report.audit_person = #{dto.roleUnit} and (report."STATUS" = 0 or report."STATUS" = 1) |
| | | </if> |
| | | <if test="dto.approvalStatus != null and dto.approvalStatus ==1"> |
| | | and userR.approval_status = 1 |
| | |
| | | <if test="dto.endTime != null and dto.endTime !='' "> |
| | | and report.report_time <= #{dto.endTime} |
| | | </if> |
| | | group by |
| | | report.id, |
| | | report.program_name, |
| | | report.gx_step_name, |
| | | report."STATUS", |
| | | report.audit_person, |
| | | report.report_time, |
| | | report.create_time, |
| | | report.gx_progress, |
| | | report.remark, |
| | | DBMS_LOB.SUBSTR( report.images_urls) , |
| | | DBMS_LOB.SUBSTR( report.video_urls ) , |
| | | de.device_name, |
| | | de.device_type, |
| | | dict."DICT_VALUE" , |
| | | si.control_unit, |
| | | si.self_unit, |
| | | dria."county_cd" |
| | | order by report.report_time desc |
| | | <!--<choose > |
| | | <when test="dto.approvalStatus != null and dto.approvalStatus == 0"> |
| | | and report.audit_person = #{dto.userId} and (report."STATUS" = 0 or report."STATUS" = 1) |
| | |
| | | </if> |
| | | </select> |
| | | <select id="getUserByIds" resultType="java.util.Map"> |
| | | select u.id ,u.real_name ,d.full_name as deptName from ywxt.blade_user u inner join ywxt.blade_dept d on u.dept_id = convert(varchar(100),d.id) where 1 = 1 |
| | | select u.id ,u.real_name ,d.full_name as deptName from ywxt.blade_user u inner join ywxt.blade_dept d on u.dept_id like CONCAT('%', d.id, '%') where 1 = 1 and d."SG_CODE" is not null |
| | | <if test="ids != null and ids.size>0"> |
| | | AND u.id in |
| | | <foreach collection="ids" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | |
| | | </select> |
| | | <select id="getUserByIdsCounty" resultType="java.util.Map"> |
| | | select u.id ,u.real_name ,d.full_name as deptName from ywxt.blade_user u inner join ywxt.blade_dept d on FIND_IN_SET(u.dept_id, d.id) > 0 where 1 = 1 |
| | | <if test="ids != null and ids.size>0"> |
| | | AND u.id in |
| | | <foreach collection="ids" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | |
| | | </select> |
| | | <select id="selectProframId" resultType="java.lang.Long"> |
| | | select program_id from ywxt.sg_device where id = #{deviceId} |
| | |
| | | select u.* from ywxt.sg_report_user u left join ywxt.sg_progresss_report r on u.report_id = r.id |
| | | where 1=1 and r.profram_id = #{programId} |
| | | </select> |
| | | <select id="getRoleByIds" resultType="java.util.Map"> |
| | | select id,role_name as roleName from "YWXT"."BLADE_ROLE" WHERE 1=1 |
| | | <if test="ids != null and ids.size>0"> |
| | | AND id in |
| | | <foreach collection="ids" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | <select id="getSgEngineerRole" resultType="java.lang.Long"> |
| | | select id from "YWXT"."BLADE_ROLE" where parent_id = 1800818080896073730; |
| | | </select> |
| | | </mapper> |
| | |
| | | package cn.gistack.sm.sg.mapper; |
| | | |
| | | import cn.gistack.sm.sg.DO.SgGxStepDO; |
| | | import cn.gistack.sm.sg.DO.SgProjectInfoDO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.*; |
| | |
| | | |
| | | List<SgStatisDeviceVO> getDeviceTypes(@Param("s") String s); |
| | | |
| | | List<SgAllDeptOrUser> queryDept(); |
| | | |
| | | List<SgAllDeptOrUser> queryUser(); |
| | | |
| | | List<SgProjectTreeVO> projectTree(@Param("dto") ProjectSearchDTO dto); |
| | | |
| | | List<String> getUserS(@Param("list") List<String> controlUnit); |
| | | |
| | | List<ResVO> resList(IPage<ResVO> page, @Param("dto") ProjectSearchDTO dto); |
| | | |
| | | |
| | | //List<String> getProjectIds(String code,@Param("grad") String grad ); |
| | | } |
| | |
| | | dria."county_nm", |
| | | dria."town_nm", |
| | | dria."eng_scal", |
| | | dria."bas_guid" |
| | | dria."bas_guid", |
| | | dria."oth_reg_cd" |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | | WHERE |
| | | 1 =1 |
| | | <if test="dto.selfUnit != null and dto.selfUnit.size>0 "> |
| | | and |
| | | <foreach collection="dto.selfUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | info.CONSTRUCTION_UNIT Like CONCAT(CONCAT('%', #{item}), '%') or info.SELF_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.userUnit != null and dto.userUnit.size>0"> |
| | | and |
| | | <foreach collection="dto.userUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | info.CONTROL_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.countryUnit != null and dto.countryUnit.size>0"> |
| | | and dria."county_cd" in |
| | | <foreach collection="dto.countryUnit" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.projectName != null and dto.projectName != ''"> |
| | | and info.project_name like concat( concat ('%',#{dto.projectName}),'%') |
| | | </if> |
| | | <if test="dto.skName != null and dto.skName != ''"> |
| | | and info.sk_name like concat(concat('%',#{dto.skName}),'%') |
| | | </if> |
| | | <if test="dto.lot != null and dto.lot != ''"> |
| | | and info.lot = #{dto.lot} |
| | | </if> |
| | | <if test="dto.resCd != null and dto.resCd != '' "> |
| | | and info.sk_id like CONCAT(CONCAT('%', #{dto.resCd}), '%') |
| | |
| | | </if> |
| | | <if test="dto.isBegin != null and dto.isBegin == 2"> |
| | | and info.status = 0 |
| | | </if> |
| | | <if test="dto.buildStage != null and dto.buildStage != ''"> |
| | | and info.build_stage = #{dto.buildStage} |
| | | </if> |
| | | <if test="dto.projectIds != null and dto.projectIds.size > 0"> |
| | | and info.id in |
| | |
| | | #{id} |
| | | </foreach>) |
| | | </if> |
| | | <if test="dto.projectSort == null or dto.projectSort ==0"> |
| | | ORDER BY info.status desc ,info.project_progress desc |
| | | <!--<if test="dto.deptId != null and dto.deptId !=''"> |
| | | and (info.control_unit = #{dto.deptId} or info.construction_unit = #{dto.deptId}) |
| | | </if>--> |
| | | <if test="dto.adCode != null and dto.adCode !=''"> |
| | | and dria."county_cd" = #{dto.adCode} |
| | | </if> |
| | | <if test="dto.projectSort ==1"> |
| | | ORDER BY info.project_progress desc |
| | | <if test="dto.projectSort == null"> |
| | | ORDER BY TO_NUMBER(info.project_progress) desc NULLS LAST,info.status desc |
| | | </if> |
| | | <if test="dto.projectSort != null and dto.projectSort ==2"> |
| | | ORDER BY info.sk_id asc |
| | | <!-- |
| | | <if test="dto.projectSort ==1"> |
| | | ORDER BY info.project_progress desc NULLS LAST |
| | | </if> |
| | | <if test="dto.projectSort != null and dto.projectSort ==2"> |
| | | ORDER BY info.sk_id asc |
| | | </if>--> |
| | | <if test="dto.projectSort != null and dto.projectSort ==3"> |
| | | ORDER BY TO_NUMBER(SUBSTR(info.surface_progress, 1, LENGTH(info.surface_progress) - 1)) desc NULLS LAST |
| | | </if> |
| | | <if test="dto.projectSort != null and dto.projectSort ==4"> |
| | | ORDER BY TO_NUMBER(SUBSTR(info.video_progress, 1, LENGTH(info.video_progress) - 1)) desc NULLS LAST |
| | | </if> |
| | | <if test="dto.projectSort != null and dto.projectSort ==5"> |
| | | ORDER BY TO_NUMBER(SUBSTR(info.trans_progress, 1, LENGTH(info.trans_progress) - 1)) desc NULLS LAST |
| | | </if> |
| | | <if test="dto.projectSort != null and dto.projectSort ==6"> |
| | | ORDER BY TO_NUMBER(SUBSTR(info.seepage_progress , 1, LENGTH(info.seepage_progress ) - 1)) desc NULLS LAST |
| | | </if> |
| | | </select> |
| | | |
| | |
| | | pro.STATUS AS projectStatus, |
| | | re.id AS reportId, |
| | | pro.lon_lat, |
| | | re.resubmit |
| | | re.resubmit, |
| | | COALESCE(d.price, 99) as price, |
| | | COALESCE(Pdict.sort, 0) as sort, |
| | | COALESCE(dict.sort, 0) as dSort |
| | | FROM |
| | | ywxt.sg_project_info pro |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id |
| | | LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id |
| | | LEFT JOIN YWXT."BLADE_DICT_BIZ" AS dict ON d.device_type = dict.DICT_KEY AND dict.CODE = 'SG_DEVICE_TYPE' |
| | | LEFT JOIN YWXT."BLADE_DICT_BIZ" Pdict on dict.parent_id = Pdict.id |
| | |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | ORDER BY pro.status desc ,pro.project_progress desc |
| | | <if test="dto.lot != null and dto.lot != ''"> |
| | | and pro.lot like CONCAT(CONCAT('%',#{dto.lot}),'%') |
| | | </if> |
| | | <if test="dto.buildStage != null and dto.buildStage != ''"> |
| | | and pro.build_stage like CONCAT(CONCAT('%',#{dto.buildStage}),'%') |
| | | </if> |
| | | <include refid="queryBySgCodeS"></include> |
| | | ORDER BY pro.status desc ,pro.project_progress desc,step.gx_step_num asc |
| | | |
| | | </select> |
| | | <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | |
| | | <if test="dto.projectName != null and dto.projectName != ''"> |
| | | and pro.project_name like CONCAT(CONCAT('%',#{dto.projectName}),'%') |
| | | </if> |
| | | <if test="dto.lot != null and dto.lot != ''"> |
| | | and pro.lot like CONCAT(CONCAT('%',#{dto.lot}),'%') |
| | | </if> |
| | | <if test="dto.buildStage != null and dto.buildStage != ''"> |
| | | and pro.build_stage like CONCAT(CONCAT('%',#{dto.buildStage}),'%') |
| | | </if> |
| | | <if test="dto.deptId != null and dto.deptId !=''"> |
| | | and (pro.control_unit = #{dto.deptId} or pro.construction_unit = #{dto.deptId}) |
| | | </if> |
| | | ORDER BY pro.project_progress desc NULLS LAST |
| | | </select> |
| | | <select id="getSgstatiss" resultType="cn.gistack.sm.sg.VO.SgStatisticsVO"> |
| | | SELECT |
| | |
| | | a."ad_name" NAME, |
| | | SUM( CASE WHEN b.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum, |
| | | count( b.STATUS ) projectSum, |
| | | LISTAGG(b.id, ',') as proIds |
| | | LISTAGG(b.id, ',') as proIds, |
| | | b.build_stage |
| | | FROM |
| | | ( |
| | | SELECT |
| | |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode, |
| | | info.STATUS, |
| | | info.id |
| | | info.id, |
| | | info.build_stage |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | |
| | | a."p_ad_code" = #{code} |
| | | GROUP BY |
| | | a."ad_code", |
| | | a."ad_name" |
| | | a."ad_name", |
| | | b.build_stage |
| | | </select> |
| | | |
| | | <select id="getsgStatisticsZero" resultType="cn.gistack.sm.sg.VO.SgStatisProVO"> |
| | |
| | | dria."city_cd" code, dria."city_nm" name , |
| | | sum( CASE WHEN info.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum, |
| | | count( info.STATUS ) projectSum, |
| | | LISTAGG(info.id, ',') as proIds |
| | | LISTAGG(info.id, ',') as proIds, |
| | | info.build_stage as buildStage |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | |
| | | <if test="code != null and code != ''"> |
| | | AND info.lot =#{code} |
| | | </if> |
| | | Group By dria."city_cd",dria."city_nm" |
| | | Group By dria."city_cd",dria."city_nm",info.build_stage |
| | | HAVING |
| | | dria."city_cd" IS NOT NULL AND |
| | | dria."city_nm" IS NOT NULL |
| | |
| | | info.lot as name, |
| | | sum( CASE WHEN info.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum, |
| | | count( info.STATUS ) AS projectSum, |
| | | LISTAGG(info.id, ',') as proIds |
| | | LISTAGG(info.id, ',') as proIds, |
| | | info.build_stage |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | | WHERE |
| | | 1 = 1 |
| | | GROUP BY |
| | | info.lot |
| | | info.lot,info.build_stage |
| | | <!-- dria."bas_guid", dria."bas_name" --> |
| | | HAVING |
| | | <!-- dria."bas_guid" IS NOT NULL AND |
| | |
| | | select DISTINCT "bas_guid" from SJZT_DW."dim_res_info_a" where "bas_name" = #{code} |
| | | </select> |
| | | <select id="progressList1" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | select pro.id, |
| | | select DISTINCT pro.id, |
| | | pro.project_name, |
| | | pro.lon_lat, |
| | | pro.status |
| | | pro.status, |
| | | pro.project_progress |
| | | from |
| | | (SELECT |
| | | pro.id, |
| | | pro.project_name, |
| | | pro.lon_lat, |
| | | pro.status, |
| | | pro.lot, |
| | | pro.build_stage, |
| | | dria."county_cd" AS countyCode, |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode |
| | | ad."ad_code" AS provinceCode, |
| | | pro.project_progress, |
| | | pro.control_unit, |
| | | pro.construction_unit |
| | | FROM |
| | | ywxt.sg_project_info pro |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id |
| | |
| | | <if test="dto.projectName != null and dto.projectName != ''"> |
| | | and pro.project_name like CONCAT(CONCAT('%',#{dto.projectName}),'%') |
| | | </if> |
| | | <if test="dto.lot != null and dto.lot != ''"> |
| | | and pro.lot like CONCAT(CONCAT('%',#{dto.lot}),'%') |
| | | </if> |
| | | <if test="dto.buildStage != null and dto.buildStage != ''"> |
| | | and pro.build_stage like CONCAT(CONCAT('%',#{dto.buildStage}),'%') |
| | | </if> |
| | | <if test="dto.deptId != null and dto.deptId !=''"> |
| | | and (pro.control_unit = #{dto.deptId} or pro.construction_unit = #{dto.deptId}) |
| | | </if> |
| | | order by pro.project_progress desc NULLS LAST |
| | | </select> |
| | | <select id="queryStepByProject1" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | select |
| | |
| | | dria."county_cd" AS countyCode, |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode, |
| | | pro.project_progress |
| | | pro.project_progress, |
| | | pro.lot, |
| | | pro.build_stage |
| | | FROM |
| | | ywxt.sg_project_info pro |
| | | LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id |
| | |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id |
| | | LEFT JOIN YWXT."att_ad_base" att ON att."ad_code" = dria."city_cd" |
| | | LEFT JOIN YWXT."att_ad_base" ad ON att."p_ad_code" = ad."ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" aad ON aad."ad_code" = ad."p_ad_code") pro |
| | | LEFT JOIN YWXT."att_ad_base" aad ON aad."ad_code" = ad."p_ad_code" |
| | | where 1=1 |
| | | <include refid="queryBySgCodeS"></include> |
| | | ) pro |
| | | LEFT JOIN YWXT."att_ad_base" a ON ( |
| | | ( pro.countyCode = a."guid" ) |
| | | OR ( pro.cityCode = a."guid" ) |
| | |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.lot != null and dto.lot != ''"> |
| | | and pro.lot like CONCAT(CONCAT('%',#{dto.lot}),'%') |
| | | </if> |
| | | <if test="dto.buildStage != null and dto.buildStage != ''"> |
| | | and pro.build_stage like CONCAT(CONCAT('%',#{dto.buildStage}),'%') |
| | | </if> |
| | | ORDER BY pro.projectStatus desc ,pro.project_progress desc |
| | | </select> |
| | | |
| | | <sql id="queryBySgCodeS"> |
| | | <if test="dto.selfUnit != null and dto.selfUnit.size>0"> |
| | | and |
| | | <foreach collection="dto.selfUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | pro.CONSTRUCTION_UNIT Like CONCAT(CONCAT('%', #{item}), '%') or pro.SELF_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.userUnit != null and dto.userUnit.size>0"> |
| | | and |
| | | <foreach collection="dto.userUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | pro.CONTROL_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.countryUnit != null and dto.countryUnit.size>0"> |
| | | and dria."county_cd" in |
| | | <foreach collection="dto.countryUnit" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.sgCodeS != null and dto.sgCodeS.size > 0"> |
| | | and (dria."province_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | or dria."city_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | or dria."county_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | or dria."town_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach>) |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="selectVOById" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | select * from ywxt.sg_project_info pro where pro.id = #{proframId} |
| | | </select> |
| | |
| | | Pdict.DICT_KEY |
| | | </select> |
| | | <select id="getSgCodeByUser" resultType="java.lang.String"> |
| | | SELECT |
| | | <!-- SELECT |
| | | dp."SG_CODE" |
| | | FROM |
| | | ywxt.BLADE_USER u |
| | | LEFT JOIN ywxt.blade_dept dp ON u.dept_id = cast( dp.id AS VARCHAR ) |
| | | WHERE u.id = #{userId} |
| | | WHERE u.id = #{userId} --> |
| | | |
| | | SELECT |
| | | distinct dp."SG_CODE" |
| | | FROM |
| | | ywxt.BLADE_USER u |
| | | |
| | | LEFT JOIN ywxt.blade_dept dp ON u.dept_id Like CONCAT('%', dp.id , '%') |
| | | WHERE u.id = #{userId} and dp."SG_CODE" is not null and <![CDATA[dp."SG_CODE" <>'' ]]> limit 1 |
| | | |
| | | </select> |
| | | <select id="queryDept" resultType="cn.gistack.sm.sg.VO.SgAllDeptOrUser"> |
| | | select id,full_name as name from "YWXT"."BLADE_DEPT" |
| | | </select> |
| | | <select id="queryUser" resultType="cn.gistack.sm.sg.VO.SgAllDeptOrUser"> |
| | | select id,real_name as name from "YWXT"."BLADE_USER"; |
| | | </select> |
| | | <select id="projectTree" resultType="cn.gistack.sm.sg.VO.SgProjectTreeVO"> |
| | | SELECT |
| | | <!-- TOP 200 --> |
| | | info.id, |
| | | info.lot, |
| | | dria."province_nm", |
| | | dria."city_nm", |
| | | dria."county_nm", |
| | | dria."town_nm", |
| | | dria."res_nm" |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | | WHERE |
| | | 1 =1 |
| | | <if test="dto.buildStage != null and dto.buildStage != ''"> |
| | | and info.build_stage = #{dto.buildStage} |
| | | </if> |
| | | <if test="dto.selfUnit != null and dto.selfUnit.size>0 "> |
| | | and |
| | | <foreach collection="dto.selfUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | info.CONSTRUCTION_UNIT Like CONCAT(CONCAT('%', #{item}), '%') or info.SELF_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.userUnit != null and dto.userUnit.size>0"> |
| | | and |
| | | <foreach collection="dto.userUnit" item="item" index="index" open="(" separator="or" close=")"> |
| | | info.CONTROL_UNIT Like CONCAT(CONCAT('%', #{item}), '%') |
| | | </foreach> |
| | | </if> |
| | | <if test="dto.sgCodeS != null and dto.sgCodeS.size > 0"> |
| | | and (dria."province_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | or dria."city_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | or dria."county_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | or dria."town_cd" in |
| | | <foreach collection="dto.sgCodeS" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach>) |
| | | </if> |
| | | <if test="dto.adCode != null and dto.adCode !=''"> |
| | | and dria."county_cd" = #{dto.adCode} |
| | | </if> |
| | | </select> |
| | | <select id="getUserS" resultType="java.lang.String"> |
| | | |
| | | SELECT |
| | | user_id |
| | | FROM |
| | | "YWXT"."BLADE_USER_DEPT" |
| | | WHERE 1=1 |
| | | <if test="list != null and list.size>0"> |
| | | and dept_id in |
| | | <foreach collection="list" item="item" index="index" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </select> |
| | | <select id="resList" resultType="cn.gistack.sm.sg.VO.ResVO"> |
| | | select dria.* from "SJZT_DW"."dim_res_info_a" dria where 1=1 |
| | | <if test="dto.adCode != null and dto.adCode != ''"> |
| | | and (dria."province_cd" = #{dto.adCode} or dria."city_cd" = #{dto.adCode} or dria."county_cd" = #{dto.adCode}) |
| | | </if> |
| | | <if test="dto.skName != null and dto.skName != ''"> |
| | | and dria."res_nm" like CONCAT(CONCAT('%', #{dto.skName}), '%') |
| | | </if> |
| | | <include refid="queryBySgCodeS"></include> |
| | | </select> |
| | | </mapper> |
| | |
| | | FROM |
| | | ywxt.sg_project_info pro |
| | | inner JOIN ywxt.sg_device d ON pro.id = d.program_id |
| | | Left JOIN ywxt.sg_gx_config sgc ON d.device_type = sgc.gx_device_type or sgc.gx_device_type in ('sgzb','sgys') |
| | | Left JOIN ywxt.sg_gx_config sgc ON d.device_type = sgc.gx_device_type or sgc.gx_device_type in ('cldw','sgys') |
| | | left join ywxt.blade_role ro on ro.id = sgc.role_id |
| | | left join ywxt.sg_project_person_config sppc on sgc.role_id = sppc.rold_id and sppc.program_id = pro.id |
| | | left join ywxt.blade_user bu on sppc.user_id = bu.id |
| | |
| | | |
| | | import cn.gistack.sm.sg.DO.SgProjectInfoDO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.SgProjectInfoVO; |
| | | import cn.gistack.sm.sg.VO.SgStatisProVO; |
| | | import cn.gistack.sm.sg.VO.SgStatistccVO; |
| | | import cn.gistack.sm.sg.VO.SgStatisticsVO; |
| | | import cn.gistack.sm.sg.VO.*; |
| | | import cn.gistack.sm.sg.excel.ProjectExcel; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | |
| | | */ |
| | | public interface SgProjectInfoService extends IService<SgProjectInfoDO> { |
| | | |
| | | IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO); |
| | | Object queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO); |
| | | |
| | | List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO); |
| | | |
| | |
| | | List<SgStatisProVO> getsgStatisticsList(String code); |
| | | |
| | | List<SgStatistccVO> getsgStatisticscc(String code); |
| | | |
| | | List<SgProjectTreeVO> projectTree(ProjectSearchDTO dto); |
| | | |
| | | IPage<ResVO> resList(IPage<ResVO> page, ProjectSearchDTO dto); |
| | | |
| | | void delete(String ids); |
| | | } |
| | |
| | | @Override |
| | | public List<SgDeviceDO> getDeviceList(String programId) { |
| | | List<SgDeviceDO> list = new ArrayList<>(); |
| | | QueryWrapper<SgDeviceDO> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("program_id", programId); |
| | | SgDeviceDO sg1 = new SgDeviceDO(); |
| | | sg1.setId((long) 999); |
| | | sg1.setDeviceName("施工准备"); |
| | | sg1.setDeviceType("sgzb"); |
| | | sg1.setDeviceName("测量定位"); |
| | | sg1.setDeviceType("cldw"); |
| | | sg1.setStatus(0); |
| | | list.add(sg1); |
| | | |
| | | List<SgDeviceDO> sgDeviceDOS = baseMapper.selectList(queryWrapper); |
| | | List<SgDeviceDO> sgDeviceDOS = baseMapper.queryPageList(null,SgDeviceSearchDTO.builder().projectId(programId).build()); |
| | | if (CollectionUtils.isNotEmpty(sgDeviceDOS)) { |
| | | list.addAll(sgDeviceDOS); |
| | | } |
| | |
| | | if(deviceId.equals("998")){ |
| | | return sgGxStepMapper.queryStepLists("sgys"); |
| | | }else if (deviceId.equals("999")){ |
| | | return sgGxStepMapper.queryStepLists("sgzb"); |
| | | return sgGxStepMapper.queryStepLists("cldw"); |
| | | } |
| | | List<SgGxStepDO> sgGxStepDOS = sgGxStepMapper.queryStepList(deviceId); |
| | | return sgGxStepDOS; |
| | |
| | | import cn.gistack.sm.sg.service.SgGxStepService; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | |
| | | private SgProgressReportMapper sgProgressReportMapper; |
| | | @Override |
| | | public IPage<SgGxVO> queryPageList(IPage<SgGxVO> page, ProjectSearchDTO searchDTO) { |
| | | if (StringUtils.isNotBlank(searchDTO.getGxType())){ |
| | | List<String> childType = sgGxMapper.childType(searchDTO.getGxType()); |
| | | searchDTO.setChildTypeList(childType); |
| | | } |
| | | List<SgGxVO> list = sgGxMapper.queryPageList(page,searchDTO); |
| | | |
| | | if (CollectionUtils.isNotEmpty(list)){ |
| | | List<Long> ids = list.stream().map(SgGxDO::getId).collect(Collectors.toList()); |
| | | List<Long> userIds = list.stream().map(SgGxDO::getCreateUser).collect(Collectors.toList()); |
| | |
| | | import cn.gistack.sm.sg.DO.*; |
| | | import cn.gistack.sm.sg.DTO.ApprovalDTO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.SgProgressReportVO; |
| | | import cn.gistack.sm.sg.VO.SgProjectInfoVO; |
| | | import cn.gistack.sm.sg.VO.SgReportVO; |
| | | import cn.gistack.sm.sg.VO.SgStepReportVO; |
| | | import cn.gistack.sm.sg.VO.*; |
| | | import cn.gistack.sm.sg.mapper.*; |
| | | import cn.gistack.sm.sg.service.SgProgressReportService; |
| | | import cn.gistack.sm.sg.service.SgProjectInfoService; |
| | |
| | | import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.support.Kv; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | |
| | | @Autowired |
| | | private SgProjectInfoServiceImpl sgProjectInfoService; |
| | | |
| | | @Autowired |
| | | private SgGxMapper sgGxMapper; |
| | | |
| | | |
| | | |
| | | ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); |
| | | @Override |
| | | public IPage<SgProgressReportVO> queryPageList(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) { |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryPageList(page,searchDTO); |
| | | if(list != null){ |
| | | list.forEach(s ->{ |
| | | List<String> resultUsers=new ArrayList<>(); |
| | | if(s.getControlUnit()!=null){ |
| | | String controlUnit = s.getControlUnit(); |
| | | List<String> controlUnitS = Arrays.asList(controlUnit.split(",")); |
| | | List<String> users=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | resultUsers.addAll(users); |
| | | } |
| | | if(s.getSelfUnit()!=null){ |
| | | String selfUnit = s.getSelfUnit(); |
| | | List<String> selfUnitS = Arrays.asList(selfUnit.split(",")); |
| | | List<String> selfUnitusers=sgProjectInfoMapper.getUserS(selfUnitS); |
| | | resultUsers.addAll(selfUnitusers); |
| | | } |
| | | |
| | | |
| | | s.setUserIDs(resultUsers); |
| | | String gxStepName = s.getGxStepName(); |
| | | String countyCd = s.getCountyCd(); |
| | | |
| | | if("测量定位".equals(gxStepName)){ |
| | | |
| | | if(countyCd!=null){ |
| | | List<String> controlUnitS = Arrays.asList(countyCd.split(",")); |
| | | List<String> xbUnitIDs=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | s.setXbUnitIDs(xbUnitIDs); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | return page.setRecords(list); |
| | | } |
| | | @Override |
| | | public IPage<SgProgressReportVO> queryPageListAll(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) { |
| | | if (StringUtils.isNotBlank(searchDTO.getTypeName())){ |
| | | List<String> childType = sgGxMapper.childType(searchDTO.getTypeName()); |
| | | searchDTO.setChildTypeList(childType); |
| | | } |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryPageListAll(page,searchDTO); |
| | | if(list != null){ |
| | | list.forEach(s ->{ |
| | | List<String> resultUsers=new ArrayList<>(); |
| | | if(s.getControlUnit()!=null){ |
| | | String controlUnit = s.getControlUnit(); |
| | | List<String> controlUnitS = Arrays.asList(controlUnit.split(",")); |
| | | List<String> users=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | resultUsers.addAll(users); |
| | | } |
| | | if(s.getSelfUnit()!=null){ |
| | | String selfUnit = s.getSelfUnit(); |
| | | List<String> selfUnitS = Arrays.asList(selfUnit.split(",")); |
| | | List<String> selfUnitusers=sgProjectInfoMapper.getUserS(selfUnitS); |
| | | resultUsers.addAll(selfUnitusers); |
| | | } |
| | | |
| | | |
| | | s.setUserIDs(resultUsers); |
| | | String gxStepName = s.getGxStepName(); |
| | | String countyCd = s.getCountyCd(); |
| | | |
| | | if("测量定位".equals(gxStepName)){ |
| | | |
| | | if(countyCd!=null){ |
| | | List<String> controlUnitS = Arrays.asList(countyCd.split(",")); |
| | | List<String> xbUnitIDs=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | s.setXbUnitIDs(xbUnitIDs); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | return page.setRecords(list); |
| | | } |
| | | @Override |
| | | @Transactional |
| | | public void add(SgProgressReportDO sgProgressReportDO) { |
| | | String resubmitId = sgProgressReportDO.getResubmitId(); |
| | | Long roleId = getRoleId(); |
| | | if (StringUtils.isNotBlank(resubmitId)){ |
| | | new LambdaUpdateChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getId,resubmitId).set(SgProgressReportDO::getResubmit,1).update(); |
| | | } |
| | |
| | | |
| | | } |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "施工准备"); |
| | | wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "测量定位"); |
| | | List<SgProgressReportDO> sgProgressReportDOS1 = sgProgressReportMapper.selectList(wrappers); |
| | | |
| | | if(sgProgressReportDO.getGxDeviceId()==998){ |
| | |
| | | if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) { |
| | | for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) { |
| | | if (sgProgressReportDO1.getStatus()!= 2 && sgProgressReportDO1.getStatus()!= 3) { |
| | | throw new ServiceException("请先完成施工准备的审批!"); |
| | | throw new ServiceException("请先完成测量定位的审批!"); |
| | | } |
| | | } |
| | | } else if (sgProgressReportDOS1 == null || (!sgProgressReportDO.getGxStepName().equals("施工准备"))) { |
| | | throw new ServiceException("请先发起施工准备的审批!"); |
| | | } else if (sgProgressReportDOS1 == null || (!sgProgressReportDO.getGxStepName().equals("测量定位"))) { |
| | | throw new ServiceException("请先发起测量定位的审批!"); |
| | | } |
| | | Long gxDeviceId = sgProgressReportDO.getGxDeviceId(); |
| | | Long gxStepId = sgProgressReportDO.getGxStepId(); |
| | |
| | | List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId()); |
| | | QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>(); |
| | | wrapper.in("status",Arrays.asList(0,1,2,3)); |
| | | if(sgProgressReportDO.getGxDeviceId()==998 || sgProgressReportDO.getGxDeviceId()==999){ |
| | | if(sgProgressReportDO.getGxDeviceId()==998 |
| | | || sgProgressReportDO.getGxDeviceId()==999 |
| | | ){ |
| | | wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4).eq("profram_id",sgProgressReportDO.getProframId()); |
| | | }else { |
| | | wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4); |
| | |
| | | String deviceType =""; |
| | | SgDeviceDO sgDeviceDO = new SgDeviceDO(); |
| | | if (gxDeviceId == 999){ |
| | | deviceType = "sgzb"; |
| | | }else if(gxDeviceId == 998){ |
| | | deviceType = "cldw"; |
| | | //sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).roleId(Long.parseLong("1811657352658042882")).approvalStatus(0).approvalOrder(1).build()); |
| | | }else |
| | | if(gxDeviceId == 998){ |
| | | deviceType = "sgys"; |
| | | //sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).roleId(Long.parseLong("1811657352658042882")).approvalStatus(0).approvalOrder(1).build()); |
| | | }else { |
| | | sgDeviceDO = sgDeviceMapper.selectById(gxDeviceId); |
| | | deviceType = sgDeviceDO.getDeviceType(); |
| | |
| | | if (CollectionUtils.isEmpty(roIds)){ |
| | | throw new ServiceException("请完成工序角色配置!"); |
| | | } |
| | | List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).eq(SgProjectPersonConfigDO::getProgramId,sgProgressReportDO.getProframId()).in(SgProjectPersonConfigDO::getRoldId, roIds).list(); |
| | | if (CollectionUtils.isEmpty(personConfigDOS)){ |
| | | throw new ServiceException("请完成项目审批人员配置!"); |
| | | } |
| | | Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId)); |
| | | sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build()); |
| | | // List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).eq(SgProjectPersonConfigDO::getProgramId,sgProgressReportDO.getProframId()).in(SgProjectPersonConfigDO::getRoldId, roIds).list(); |
| | | // if (CollectionUtils.isEmpty(personConfigDOS)){ |
| | | // throw new ServiceException("请完成项目审批人员配置!"); |
| | | // } |
| | | //Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId)); |
| | | //新增审批记录 |
| | | sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").roleId(roleId).approvalStatus(0).approvalOrder(0).approvalTime(now).build()); |
| | | for (SgGxConfigDO sgGxConfigDO : sgGxConfigDOS) { |
| | | sgGxConfigDO.setUser(userMap.get(Long.parseLong(sgGxConfigDO.getRoleId()))); |
| | | sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgGxConfigDO.getUser()).approvalStatus(0).approvalOrder(sgGxConfigDO.getSgOrder()).build()); |
| | | //sgGxConfigDO.setUser(userMap.get(Long.parseLong(sgGxConfigDO.getRoleId()))); |
| | | sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).roleId(Long.parseLong(sgGxConfigDO.getRoleId())).approvalStatus(0).approvalOrder(sgGxConfigDO.getSgOrder()).build()); |
| | | try { |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | if (sgGxConfigDO.getSgOrder() == 1) { |
| | | sgProgressReportDO.setAuditPerson(String.valueOf(sgGxConfigDO.getUser())); |
| | | sgProgressReportDO.setAuditPerson(String.valueOf(sgGxConfigDO.getRoleId())); |
| | | sgProgressReportMapper.updateById(sgProgressReportDO); |
| | | } |
| | | } |
| | | |
| | | //加个项目及设备的状态判断 方便统计计算 |
| | | if(gxStepId != 25 && gxStepId != 26 ) { |
| | | if(gxStepId != 20 && |
| | | gxStepId != 26 ) { |
| | | if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) { |
| | | sgDeviceDO.setStatus(1); |
| | | sgDeviceMapper.updateById(sgDeviceDO); |
| | | } |
| | | } |
| | | SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(sgProgressReportDO.getProframId()); |
| | | if (sgProjectInfoDO != null && sgProjectInfoDO.getStatus() == 0) { |
| | | Integer status = sgProjectInfoDO.getStatus(); |
| | | if (sgProjectInfoDO != null && ( Objects.isNull(status)||0 == status)) { |
| | | sgProjectInfoDO.setStatus(1); |
| | | sgProjectInfoMapper.updateById(sgProjectInfoDO); |
| | | } |
| | |
| | | sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName()); |
| | | }else { |
| | | sgProgressReportVO.setDeviceName("");} |
| | | List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId,id).orderByAsc(SgReportUserDO::getId).list(); |
| | | List<Long> ids = list.stream().map(s -> s.getUserId()).collect(Collectors.toList()); |
| | | List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId,id).orderByAsc(SgReportUserDO::getApprovalOrder).list(); |
| | | List<Long> ids = list.stream().map(SgReportUserDO::getUserId).collect(Collectors.toList()); |
| | | List<Long> idsCounty = list.stream().filter(s->s.getRoleId().equals(1811657352658042882L)).map(SgReportUserDO::getUserId).collect(Collectors.toList()); |
| | | List<Long> rids = list.stream().map(SgReportUserDO::getRoleId).collect(Collectors.toList()); |
| | | List<Map<String,Object>> users = sgProgressReportMapper.getUserByIds(ids); |
| | | List<Map<String,Object>> usersCounty = sgProgressReportMapper.getUserByIdsCounty(idsCounty); |
| | | users.addAll(usersCounty); |
| | | List<Map<String,Object>> roles = sgProgressReportMapper.getRoleByIds(rids); |
| | | |
| | | for (Map<String, Object> user : users) { |
| | | for (SgReportUserDO sgReportUserDO : list) { |
| | | if (user.get("ID").equals(sgReportUserDO.getUserId())){ |
| | |
| | | } |
| | | } |
| | | } |
| | | for (Map<String, Object> r : roles) { |
| | | for (SgReportUserDO sgReportUserDO : list) { |
| | | if (r.get("ID").equals(sgReportUserDO.getRoleId())){ |
| | | sgReportUserDO.setRoleName(r.get("ROLENAME").toString()); |
| | | } |
| | | } |
| | | } |
| | | sgProgressReportVO.setSgReportUserDOS(list); |
| | | List<SgStepReportVO> sgStepReportVOS = sgProgressReportMapper.selectByDeviceId(sgProgressReportVO.getGxDeviceId()); |
| | | sgStepReportVOS = sgStepReportVOS.stream().filter(s -> s.getApprovalStatus() == null || (s.getApprovalStatus() != 4 && !(s.getApprovalStatus() == 3 && s.getResubmit() != 0))).collect(Collectors.toList()); |
| | | sgProgressReportVO.setSgStepReportVOS(sgStepReportVOS); |
| | | |
| | | if(sgProgressReportVO.getControlUnit()!=null){ |
| | | String controlUnit = sgProgressReportVO.getControlUnit(); |
| | | List<String> controlUnitS = Arrays.asList(controlUnit.split(",")); |
| | | List<String> users1=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | sgProgressReportVO.setUserIDs(users1); |
| | | } |
| | | String gxStepName = sgProgressReportVO.getGxStepName(); |
| | | String countyCd = sgProgressReportVO.getCountyCd(); |
| | | |
| | | if("测量定位".equals(gxStepName)){ |
| | | |
| | | if(countyCd!=null){ |
| | | List<String> controlUnitS = Arrays.asList(countyCd.split(",")); |
| | | List<String> xbUnitIDs=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | sgProgressReportVO.setXbUnitIDs(xbUnitIDs); |
| | | } |
| | | |
| | | } |
| | | return sgProgressReportVO; |
| | | } |
| | | |
| | |
| | | Integer isReject = approvalDTO.getIsReject(); |
| | | Long userId = approvalDTO.getUserId(); |
| | | Long id = approvalDTO.getId(); |
| | | Long roleId = getRoleId(); |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("id", id); |
| | | SgProgressReportDO sgProgressReportDOS1 = sgProgressReportMapper.selectOne(wrappers); |
| | | |
| | | //判断当前用户的角色是不是 工序配置的审核的角色 |
| | | Long gxDeviceId = sgProgressReportDOS1.getGxDeviceId(); |
| | | if (gxDeviceId != 998 && gxDeviceId != 999) { |
| | | List<SgGxConfigDO> sgGxConfigDOS = new LambdaQueryChainWrapper<>(sgGxConfigMapper) |
| | | // .eq(SgGxConfigDO::getGxDeviceType, sgProgressReportDOS1.getDeviceType()) |
| | | .eq(SgGxConfigDO::getGxStepId, sgProgressReportDOS1.getGxStepId()).orderByAsc(SgGxConfigDO::getSgOrder).list(); |
| | | List<String> roIds = sgGxConfigDOS.stream().map(SgGxConfigDO::getRoleId).collect(Collectors.toList()); |
| | | if (CollectionUtils.isEmpty(roIds)){ |
| | | throw new ServiceException("请完成工序角色配置!"); |
| | | } |
| | | } |
| | | SgProgressReportDO sgProgressReportDO = sgProgressReportMapper.selectById(id); |
| | | List<SgReportUserDO> sgReportUserDOS = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).ne(SgReportUserDO::getApprovalOrder,0).eq(SgReportUserDO::getIsHis,0) |
| | | .orderByAsc(SgReportUserDO::getApprovalOrder).list(); |
| | | |
| | | //审批者 |
| | | SgReportUserDO sgReportUserDO = new SgReportUserDO(); |
| | | if (isReject==1 && sgProgressReportDO.getStatus().equals(2)){ |
| | | sgReportUserDO = sgReportUserDOS.get(0); |
| | | if (isReject==1){ |
| | | sgReportUserDO = SgReportUserDO.builder().reportId(approvalDTO.getId()).approvalOrder(sgReportUserDOS.get(sgReportUserDOS.size() - 1).getApprovalOrder()+1).roleId(roleId).build(); |
| | | sgReportUserMapper.insert(sgReportUserDO); |
| | | }else { |
| | | sgReportUserDO = sgReportUserDOS.stream().filter(s -> s.getUserId().equals(Long.parseLong(sgProgressReportDO.getAuditPerson()))).findFirst().get(); |
| | | sgReportUserDO = sgReportUserDOS.stream().filter(s -> s.getRoleId().equals(Long.parseLong(sgProgressReportDO.getAuditPerson()))).findFirst().get(); |
| | | } |
| | | Date date = new Date(); |
| | | LambdaUpdateChainWrapper<SgProgressReportDO> updateChainWrapper = new LambdaUpdateChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getId, id); |
| | |
| | | .eq(SgReportUserDO::getId, sgReportUserDO.getId()).set(SgReportUserDO::getApprovalContent,approvalDTO.getApprovalContent()).set(SgReportUserDO::getApprovalTime,date); |
| | | if (approvalDTO.getStatus()==1){ |
| | | Integer approvalOrder = sgReportUserDO.getApprovalOrder(); |
| | | userUpdate.set(SgReportUserDO::getApprovalStatus,1).update(); |
| | | userUpdate.set(SgReportUserDO::getApprovalStatus,1).set(SgReportUserDO::getUserId,userId).update(); |
| | | Optional<SgReportUserDO> next = sgReportUserDOS.stream().filter(s -> s.getApprovalOrder() == approvalOrder + 1).findFirst(); |
| | | //如果存在下一个审批人,则继续审批 |
| | | if (next.isPresent()){ |
| | | SgReportUserDO nextUser = next.get(); |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getUserId()).update(); |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getRoleId()).update(); |
| | | }else { |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,2).set(SgProgressReportDO::getAuditPerson,null).update(); |
| | | Long proframId = sgProgressReportMapper.selectById(approvalDTO.getId()).getProframId(); |
| | | //工序审核完成后 进行项目和设备状态的判断 |
| | | cachedThreadPool.execute(new Runnable(){ |
| | | @Override |
| | | public void run(){ |
| | | // cachedThreadPool.execute(new Runnable(){ |
| | | // @Override |
| | | // public void run(){ |
| | | setProgramAndDeviceStatus(proframId); |
| | | |
| | | } |
| | | }); |
| | | cachedThreadPool.execute(new Runnable(){ |
| | | @Override |
| | | public void run(){ |
| | | Long proframId = sgProgressReportMapper.selectById(approvalDTO.getId()).getProframId(); |
| | | setProgramProgress(proframId); |
| | | } |
| | | }); |
| | | // |
| | | // } |
| | | // }); |
| | | Long projectID = sgProgressReportMapper.selectById(approvalDTO.getId()).getProframId(); |
| | | setProgramProgress(projectID); |
| | | } |
| | | }else { |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,3); |
| | | updateChainWrapper.set(SgProgressReportDO::getResubmit,0); |
| | | userUpdate.set(SgReportUserDO::getApprovalStatus,2); |
| | | /*if (isReject==1){ |
| | | userUpdate.set(SgReportUserDO::getUserId,userId); |
| | | }*/ |
| | | userUpdate.set(SgReportUserDO::getUserId,userId); |
| | | userUpdate.update(); |
| | | /*for (SgReportUserDO reportUserDO : sgReportUserDOS) { |
| | | if (reportUserDO.getApprovalOrder()<=sgReportUserDO.getApprovalOrder()&&reportUserDO.getApprovalOrder()!=0){ |
| | | //更新为历史数据 |
| | | new LambdaUpdateChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getId,reportUserDO.getId()).set(SgReportUserDO::getIsHis,1).update(); |
| | | setReportUser(date, reportUserDO); |
| | | sgReportUserMapper.insert(reportUserDO); |
| | | try { |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }else if (reportUserDO.getApprovalOrder()>sgReportUserDO.getApprovalOrder()){ |
| | | sgReportUserMapper.deleteById(reportUserDO.getId()); |
| | | setReportUser(date, reportUserDO); |
| | | sgReportUserMapper.insert(reportUserDO); |
| | | try { |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | if (reportUserDO.getApprovalOrder()==1){ |
| | | updateChainWrapper.set(SgProgressReportDO::getAuditPerson,reportUserDO.getUserId()); |
| | | } |
| | | }*/ |
| | | updateChainWrapper.update(); |
| | | } |
| | | |
| | |
| | | * @param proframId |
| | | */ |
| | | public void setProgramProgress(Long proframId) { |
| | | SgProjectInfoVO sgProjectInfoVO = sgProjectInfoMapper.selectVOById(proframId); |
| | | List<SgProjectInfoDO> progress = sgProjectInfoService.getProjectProgress(Collections.singletonList(sgProjectInfoVO)); |
| | | ProjectSearchDTO searchDTO = new ProjectSearchDTO(); |
| | | searchDTO.setProjectId(String.valueOf(proframId)); |
| | | List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject(searchDTO); |
| | | List<SgProjectInfoDO> progress = sgProjectInfoService.getProjectProgress(list); |
| | | String projectProgress = progress.get(0).getProjectProgress(); |
| | | if (StringUtils.isNotBlank(projectProgress)){ |
| | | String s = projectProgress.substring(0, projectProgress.length() - 1); |
| | | new LambdaUpdateChainWrapper<>(sgProjectInfoMapper).set(SgProjectInfoDO::getProjectProgress,s).update() ; |
| | | new LambdaUpdateChainWrapper<>(sgProjectInfoMapper).set(SgProjectInfoDO::getProjectProgress,s).eq(SgProjectInfoDO::getId,proframId).update() ; |
| | | } |
| | | } |
| | | private void setReportUser(Date date, SgReportUserDO reportUserDO) { |
| | |
| | | sgProjectInfoMapper.updateById(project); |
| | | } |
| | | } |
| | | |
| | | Map<String, SgOperatingRateVO> deviceTypes = sgProjectInfoService.getDeviceTypes(Arrays.asList(projectId.toString())); |
| | | SgOperatingRateVO vo = deviceTypes.get(projectId.toString()); |
| | | if (Objects.nonNull(vo)){ |
| | | project.setSurfaceProgress(vo.getSurfaceProgress()); |
| | | project.setSurfaceNum(vo.getSurfaceNum()); |
| | | project.setVideoProgress(vo.getVideoProgress()); |
| | | project.setVideoNum(vo.getVideoNum()); |
| | | project.setTransProgress(vo.getTransProgress()); |
| | | project.setTransNum(vo.getTransNum()); |
| | | project.setSeepageProgress(vo.getSeepageProgress()); |
| | | project.setSeepageNum(vo.getSeepageNum()); |
| | | sgProjectInfoMapper.updateById(project); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public void updateReport(SgProgressReportDO sgProgressReportDO) { |
| | | Long gxDeviceId = sgProgressReportDO.getGxDeviceId(); |
| | | Long gxStepId = sgProgressReportDO.getGxStepId(); |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId); |
| | | List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId()); |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "测量定位"); |
| | | List<SgProgressReportDO> sgProgressReportDOS1 = sgProgressReportMapper.selectList(wrappers); |
| | | |
| | | if(sgProgressReportDO.getGxDeviceId()==998){ |
| | | ProjectSearchDTO search = new ProjectSearchDTO(); |
| | | search.setProjectId(sgProgressReportDO.getProframId().toString()); |
| | | List<SgProjectInfoVO> sgProjectInfoVOS = sgProjectInfoMapper.queryStepByProject(search); |
| | | if(sgProjectInfoVOS != null){ |
| | | sgProjectInfoVOS.forEach(s ->{ |
| | | if(!s.getProjectStatus().equals(2)){ |
| | | throw new ServiceException("请完成所有设备工序审批!"); |
| | | } |
| | | }); |
| | | }else{ |
| | | throw new ServiceException("无设备审批数据!"); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) { |
| | | for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) { |
| | | if (sgProgressReportDO1.getStatus()!= 2 && sgProgressReportDO1.getStatus()!= 3) { |
| | | throw new ServiceException("请先完成测量定位的审批!"); |
| | | } |
| | | } |
| | | } else if (sgProgressReportDOS1 == null || (!sgProgressReportDO.getGxStepName().equals("测量定位"))) { |
| | | throw new ServiceException("请先发起测量定位的审批!"); |
| | | } |
| | | |
| | | for (SgGxStepDO gxStepDO : list) { |
| | | if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) >= 1) { |
| | | QueryWrapper<SgProgressReportDO> wrapper1 = new QueryWrapper<>(); |
| | | wrapper1.eq("gx_step_id", gxStepDO.getId()); |
| | | wrapper1.eq("gx_device_id",gxDeviceId); |
| | | wrapper1.ne("status",4); |
| | | wrapper1.ne("status",3); |
| | | SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1); |
| | | if (one == null || one.getStatus() != 2) { |
| | | throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!"); |
| | | } |
| | | } |
| | | } |
| | | sgProgressReportMapper.updateById(sgProgressReportDO); |
| | | } |
| | | |
| | | @Override |
| | | public List<SgProgressReportVO> queryList(ProjectSearchDTO searchDTO) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | searchDTO.setUserId(userId); |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | setUnit(searchDTO,user,roleId); |
| | | searchDTO.setRoleUnit(roleId); |
| | | //searchDTO.setUserId(userId); |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryList(searchDTO); |
| | | if(list != null){ |
| | | list.forEach(s ->{ |
| | | List<String> resultUsers=new ArrayList<>(); |
| | | if(s.getControlUnit()!=null){ |
| | | String controlUnit = s.getControlUnit(); |
| | | List<String> controlUnitS = Arrays.asList(controlUnit.split(",")); |
| | | List<String> users=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | resultUsers.addAll(users); |
| | | } |
| | | if(s.getSelfUnit()!=null){ |
| | | String selfUnit = s.getSelfUnit(); |
| | | List<String> selfUnitS = Arrays.asList(selfUnit.split(",")); |
| | | List<String> selfUnitusers=sgProjectInfoMapper.getUserS(selfUnitS); |
| | | resultUsers.addAll(selfUnitusers); |
| | | } |
| | | |
| | | |
| | | s.setUserIDs(resultUsers); |
| | | String gxStepName = s.getGxStepName(); |
| | | String countyCd = s.getCountyCd(); |
| | | |
| | | if("测量定位".equals(gxStepName)){ |
| | | |
| | | if(countyCd!=null){ |
| | | List<String> controlUnitS = Arrays.asList(countyCd.split(",")); |
| | | List<String> xbUnitIDs=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | s.setXbUnitIDs(xbUnitIDs); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Long> countList(ProjectSearchDTO searchDTO) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | searchDTO.setUserId(userId); |
| | | searchDTO.setAuditPerson(userId.toString()); |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | setUnit(searchDTO,user,roleId); |
| | | |
| | | searchDTO.setRoleUnit(roleId); |
| | | //searchDTO.setUserId(userId); |
| | | //searchDTO.setAuditPerson(userId.toString()); |
| | | List<SgProgressReportVO> all = sgProgressReportMapper.queryList(searchDTO); |
| | | searchDTO.setApprovalStatus(0); |
| | | List<SgProgressReportVO> pending = sgProgressReportMapper.queryList(searchDTO); |
| | |
| | | |
| | | @Override |
| | | public Map<String, Long> countListAll(ProjectSearchDTO searchDTO) { |
| | | if (StringUtils.isNotBlank(searchDTO.getTypeName())){ |
| | | List<String> childType = sgGxMapper.childType(searchDTO.getTypeName()); |
| | | searchDTO.setChildTypeList(childType); |
| | | } |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryPageListAll(null, searchDTO); |
| | | Map<String, Long> map = new HashMap<>(); |
| | | getStatusCountByList(list, map); |
| | |
| | | return true; |
| | | } |
| | | |
| | | public Long getRoleId(){ |
| | | BladeUser user = AuthUtil.getUser(); |
| | | List<String> userRole = Arrays.asList(user.getRoleId().split(",")); |
| | | List<Long> roleList = sgProgressReportMapper.getSgEngineerRole(); |
| | | Long roleId = null; |
| | | for (String s : userRole) { |
| | | long l = Long.parseLong(s); |
| | | if (roleList.contains(l)){ |
| | | roleId = l; |
| | | } |
| | | } |
| | | if (Objects.isNull(roleId)){ |
| | | roleId = Long.parseLong(userRole.get(0)); |
| | | } |
| | | return roleId; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<SgProgressReportVO> progressPage(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | searchDTO.setUserId(userId); |
| | | if (searchDTO.getApprovalStatus()!=null && searchDTO.getApprovalStatus() ==0){ |
| | | searchDTO.setAuditPerson(String.valueOf(userId)); |
| | | } |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | setUnit(searchDTO, user, roleId); |
| | | searchDTO.setRoleUnit(roleId); |
| | | // if (searchDTO.getApprovalStatus()!=null && searchDTO.getApprovalStatus() ==0){ |
| | | // searchDTO.setAuditPerson(String.valueOf(userId)); |
| | | // } |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryList(page, searchDTO); |
| | | if(list != null){ |
| | | list.forEach(s ->{ |
| | | List<String> resultUsers=new ArrayList<>(); |
| | | if(s.getControlUnit()!=null){ |
| | | String controlUnit = s.getControlUnit(); |
| | | List<String> controlUnitS = Arrays.asList(controlUnit.split(",")); |
| | | List<String> users=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | resultUsers.addAll(users); |
| | | } |
| | | if(s.getSelfUnit()!=null){ |
| | | String selfUnit = s.getSelfUnit(); |
| | | List<String> selfUnitS = Arrays.asList(selfUnit.split(",")); |
| | | List<String> selfUnitusers=sgProjectInfoMapper.getUserS(selfUnitS); |
| | | resultUsers.addAll(selfUnitusers); |
| | | } |
| | | |
| | | |
| | | s.setUserIDs(resultUsers); |
| | | String gxStepName = s.getGxStepName(); |
| | | String countyCd = s.getCountyCd(); |
| | | |
| | | if("测量定位".equals(gxStepName)){ |
| | | |
| | | if(countyCd!=null){ |
| | | List<String> controlUnitS = Arrays.asList(countyCd.split(",")); |
| | | List<String> xbUnitIDs=sgProjectInfoMapper.getUserS(controlUnitS); |
| | | s.setXbUnitIDs(xbUnitIDs); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | return page.setRecords(list); |
| | | } |
| | | |
| | | /** |
| | | * 设置部门单位查询条件 |
| | | */ |
| | | private void setUnit(ProjectSearchDTO searchDTO, BladeUser user, Long roleId) { |
| | | List<String> longList = Arrays.stream(user.getDeptId().split(",")) |
| | | .collect(Collectors.toList()); |
| | | //判断是不是省厅建办 否的话就不设置部门 |
| | | if (!roleId.equals(1800820667082948610L)){ |
| | | //判断是不是县级建办 否的话就是监理单位下人员进行 |
| | | if(roleId.equals(1800820855352672257L)){ |
| | | searchDTO.setUserUnit(longList); |
| | | } |
| | | |
| | | if(roleId.equals(1811657352658042882L)) { |
| | | searchDTO.setCountryUnit(longList); |
| | | } |
| | | |
| | | if(roleId.equals(1800818489547112450L)){ |
| | | searchDTO.setSelfUnit(longList); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String getDeviceReport(Long gxDeviceId, Long gxStepId) { |
| | | QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>(); |
| | |
| | | import cn.gistack.sm.sg.service.SgProjectInfoService; |
| | | import cn.gistack.sm.sjztmd.entity.AttAdBase; |
| | | import cn.gistack.sm.sjztmd.service.IAttAdBaseService; |
| | | import cn.hutool.core.lang.copier.Copier; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.StopWatch; |
| | | |
| | | import javax.security.auth.login.LoginContext; |
| | | import java.math.BigDecimal; |
| | | import java.math.MathContext; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | |
| | | @Autowired |
| | | private SgGxStepMapper sgGxStepMapper; |
| | | |
| | | @Autowired |
| | | private SgProgressReportServiceImpl sgProgressReportService; |
| | | |
| | | @Override |
| | | public IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) { |
| | | public Object queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(page,searchDTO); |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | | Map<Long, String> progressMap = projectProgress.stream().filter(s->s.getProjectProgress()!=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | setAdCode(searchDTO); |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | //setUnit2(searchDTO,user,roleId); |
| | | Boolean isPage = searchDTO.getIsPage(); |
| | | if (isPage==null) isPage = true; |
| | | if (isPage ){ |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(page,searchDTO); |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | | Map<Long, String> progressMap = projectProgress.stream().filter(s->s.getProjectProgress()!=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | s.setProjectProgress(progressMap.get(s.getId())); |
| | | // setPercentage(s); |
| | | }); |
| | | } |
| | | return page.setRecords(sgProjectInfoDOS); |
| | | }else { |
| | | List<SgAllDeptOrUser> allDepts = sgProjectInfoMapper.queryDept(); |
| | | Map<Long, String> deptMap = allDepts.stream().collect(Collectors.toMap(SgAllDeptOrUser::getId, SgAllDeptOrUser::getName)); |
| | | List<SgAllDeptOrUser> allUser = sgProjectInfoMapper.queryUser(); |
| | | Map<Long, String> userMap = allUser.stream().collect(Collectors.toMap(SgAllDeptOrUser::getId, SgAllDeptOrUser::getName)); |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(null,searchDTO); |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | | Map<Long, String> progressMap = projectProgress.stream().filter(s->s.getProjectProgress()!=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | s.setProjectProgress(progressMap.get(s.getId())); |
| | | // setPercentage(s); |
| | | }); |
| | | } |
| | | sgProjectInfoDOS.forEach(s->{ |
| | | s.setProjectProgress(progressMap.get(s.getId())); |
| | | //土建 |
| | | String constructionUnit = s.getConstructionUnit(); |
| | | s.setConstructionUnit(getUserOrDeptNames(deptMap,s.getConstructionUnit())); |
| | | s.setConstructionPerson(getUserOrDeptNames(userMap, s.getConstructionPerson())); |
| | | |
| | | //设备 |
| | | s.setSelfUnit(getUserOrDeptNames(deptMap,s.getSelfUnit())); |
| | | s.setSelfPerson(getUserOrDeptNames(userMap, s.getSelfPerson())); |
| | | |
| | | //设计 |
| | | s.setDesignUnit(getUserOrDeptNames(deptMap, s.getDesignUnit())); |
| | | s.setDesignPerson(getUserOrDeptNames(userMap, s.getDesignPerson())); |
| | | |
| | | //监理 |
| | | s.setControlUnit(getUserOrDeptNames(deptMap, s.getControlUnit())); |
| | | s.setControlPerson(getUserOrDeptNames(userMap, s.getControlPerson())); |
| | | |
| | | //检测 |
| | | s.setAcceptanceUnit(getUserOrDeptNames(deptMap, s.getAcceptanceUnit())); |
| | | s.setAcceptancePerson(getUserOrDeptNames(userMap, s.getAcceptancePerson())); |
| | | }); |
| | | return sgProjectInfoDOS; |
| | | } |
| | | return page.setRecords(sgProjectInfoDOS); |
| | | |
| | | } |
| | | private void setUnit2(ProjectSearchDTO searchDTO, BladeUser user, Long roleId) { |
| | | List<String> longList = Arrays.stream(user.getDeptId().split(",")) |
| | | .collect(Collectors.toList()); |
| | | //判断是不是省厅建办 否的话就不设置部门 |
| | | if (!roleId.equals(1800820667082948610L)){ |
| | | //判断是不是县级建办 否的话就是监理单位下人员进行 |
| | | if(roleId.equals(1800820855352672257L)){ |
| | | searchDTO.setUserUnit(longList); |
| | | } |
| | | |
| | | if(roleId.equals(1811657352658042882L)) { |
| | | searchDTO.setCountryUnit(longList); |
| | | } |
| | | |
| | | if(roleId==1800818489547112450L){ |
| | | searchDTO.setSelfUnit(longList); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public Long getRoleId(){ |
| | | BladeUser user = AuthUtil.getUser(); |
| | | List<String> userRole = Arrays.asList(user.getRoleId().split(",")); |
| | | List<Long> roleList = sgProgressReportMapper.getSgEngineerRole(); |
| | | Long roleId = null; |
| | | for (String s : userRole) { |
| | | long l = Long.parseLong(s); |
| | | if (roleList.contains(l)){ |
| | | roleId = l; |
| | | } |
| | | } |
| | | if (Objects.isNull(roleId)){ |
| | | roleId = Long.parseLong(userRole.get(0)); |
| | | } |
| | | return roleId; |
| | | } |
| | | /** |
| | | * 设置百分号 |
| | | * @param s |
| | | */ |
| | | private void setPercentage(SgProjectInfoDO s) { |
| | | s.setSurfaceProgress(StringUtils.isNotBlank(s.getSurfaceProgress()) ?null:s.getSurfaceProgress()+"%"); |
| | | s.setVideoProgress(StringUtils.isNotBlank(s.getVideoProgress())?null:s.getVideoProgress()+"%"); |
| | | s.setTransProgress(StringUtils.isNotBlank(s.getTransProgress())?null:s.getTransProgress()+"%"); |
| | | s.setSeepageProgress(StringUtils.isNotBlank(s.getSeepageProgress())?null:s.getSeepageProgress()+"%"); |
| | | s.setProjectAddress(StringUtils.isNotBlank(s.getProjectProgress())?null:s.getProjectProgress()+"%"); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户或者部门姓名 |
| | | * @return |
| | | */ |
| | | private String getUserOrDeptNames(Map<Long, String> map, String param ) { |
| | | String result = ""; |
| | | if (StringUtils.isNotBlank(param)){ |
| | | // 使用Stream API来处理分割和映射 |
| | | result = Arrays.stream(param.split(",")) // 将字符串按逗号分割成数组,并转为Stream |
| | | .map(Long::valueOf) // 将每个字符串元素转换为Long |
| | | .map(map::get) // 使用userMap将Long映射为对应的用户名 |
| | | .collect(Collectors.joining(",")); // 使用逗号将用户名拼接成一个字符串 |
| | | return result; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | |
| | | public List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO) { |
| | | List<PreAcceVO> palist = new ArrayList<>(); |
| | | List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject( searchDTO); |
| | | palist.add(handleQuery(25, list.get(0).getId())); |
| | | palist.add(handleQuery(20, list.get(0).getId())); |
| | | palist.add(handleQuery(26, list.get(0).getId())); |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(list); |
| | | projectProgress.forEach(s->{ |
| | |
| | | */ |
| | | @NotNull |
| | | public List<SgProjectInfoDO> getProjectProgress(List<SgProjectInfoVO> list) { |
| | | List<SgProjectInfoVO> sortedList = list.stream() |
| | | .sorted(Comparator.comparing(SgProjectInfoVO::getSort)) |
| | | .collect(Collectors.toList()); |
| | | //项目分组 |
| | | Map<Long, List<SgProjectInfoVO>> projectMap = list.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getId)); |
| | | Map<Long, List<SgProjectInfoVO>> projectMap = sortedList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getId)); |
| | | List<SgProjectInfoDO> result = new ArrayList<>(); |
| | | for (Map.Entry<Long, List<SgProjectInfoVO>> entry : projectMap.entrySet()) { |
| | | List<SgDeviceDO> allDevice = new ArrayList<>(); |
| | |
| | | if (CollectionUtils.isEmpty(ptyValue)){ |
| | | continue; |
| | | } |
| | | PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).build(); |
| | | PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).sort(ptyValue.get(0).getSort()).build(); |
| | | List<SgTypeVO> sgGxDOS = new ArrayList<>(); |
| | | //类型分组 |
| | | Map<String, List<SgProjectInfoVO>> GxMap = ptyValue.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType)); |
| | |
| | | if (CollectionUtils.isEmpty(gxList)){ |
| | | continue; |
| | | } |
| | | SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build(); |
| | | gxList = gxList.stream().sorted(Comparator.comparing(SgProjectInfoVO::getPrice)).collect(Collectors.toList()); |
| | | SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).sort(gxList.get(0).getDSort()).build(); |
| | | List<SgDeviceDO> deviceDOS = new ArrayList<>(); |
| | | //设备分组 |
| | | Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getDId)); |
| | | Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().filter(s->s.getDId()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDId)); |
| | | for (Map.Entry<Long, List<SgProjectInfoVO>> device : dMap.entrySet()) { |
| | | Long dId = device.getKey(); |
| | | List<SgProjectInfoVO> deList = device.getValue(); |
| | | SgDeviceDO sgDeviceDO = new SgDeviceDO(); |
| | | sgDeviceDO.setId(dId); |
| | | sgDeviceDO.setDeviceName(deList.get(0).getDeviceName()); |
| | | sgDeviceDO.setPrice(deList.get(0).getPrice()); |
| | | List<SgGxStepDO> stepDOS = deList.stream().filter(s -> s.getReportStatus() == null || (s.getReportStatus() != 4 && !(s.getReportStatus() == 3 && s.getResubmit() != 0))).map(s -> SgGxStepDO.builder().id(s.getStepId()).gxStepNum(s.getGxStepNum()).gxStepName(s.getGxStepName()).deviceId(s.getDId()).approvalStatus(s.getReportStatus()).build()).collect(Collectors.toList()); |
| | | List<SgGxStepDO> stepOver = stepDOS.stream().filter(s -> s.getApprovalStatus() != null && s.getApprovalStatus() == 2).collect(Collectors.toList()); |
| | | BigDecimal stepSize = BigDecimal.valueOf(stepDOS.size()); |
| | |
| | | double sum = deviceDOS.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum(); |
| | | BigDecimal deviceOver = BigDecimal.valueOf(sum); |
| | | BigDecimal divideDevice = deviceOver.divide(deviceSize, 2, RoundingMode.HALF_UP); |
| | | typeVO.setDeviceDOS(deviceDOS); |
| | | List<SgDeviceDO> sortDeviceDOs = deviceDOS.stream().filter(s->s.getPrice()!=null).sorted(Comparator.comparing(SgDeviceDO::getPrice)).collect(Collectors.toList()); |
| | | typeVO.setDeviceDOS(sortDeviceDOs); |
| | | typeVO.setTypeProgress(getBigDecimalPercent(divideDevice)); |
| | | typeVO.setProgress(divideDevice.toString()); |
| | | sgGxDOS.add(typeVO); |
| | |
| | | BigDecimal sgGxOver = BigDecimal.valueOf(sum); |
| | | BigDecimal divideSgGx = sgGxOver.divide(sgGxSize, 2, RoundingMode.HALF_UP); |
| | | ptypeVO.setPTypeProgress(getBigDecimalPercent(divideSgGx)); |
| | | sgGxDOS = sgGxDOS.stream().sorted(Comparator.comparing(SgTypeVO::getSort)).collect(Collectors.toList()); |
| | | ptypeVO.setSgTypeVOS(sgGxDOS); |
| | | pTypes.add(ptypeVO); |
| | | } |
| | |
| | | double sum = allDevice.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum(); |
| | | BigDecimal allDeviceOver = BigDecimal.valueOf(sum); |
| | | BigDecimal allDivideDevice = allDeviceOver.divide(allDeviceSize, 2, RoundingMode.HALF_UP); |
| | | sgProjectInfoDO.setPtypeVOS(pTypes); |
| | | List<PtypeVO> sortPtpes = pTypes.stream().sorted(Comparator.comparing(PtypeVO::getSort)).collect(Collectors.toList()); |
| | | sgProjectInfoDO.setPtypeVOS(sortPtpes); |
| | | sgProjectInfoDO.setProjectProgress( getBigDecimalPercent(allDivideDevice)); |
| | | sgProjectInfoDO.setProjectProgressNum(allDivideDevice); |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public IPage<SgProjectInfoVO> progressPage(IPage<SgProjectInfoVO> page, ProjectSearchDTO searchDTO) { |
| | | // setDeptId(searchDTO); |
| | | List<SgProjectInfoVO> list = new ArrayList<>(); |
| | | if(!searchDTO.getAdCode().isEmpty()){ |
| | | if(StringUtils.isNotBlank(searchDTO.getAdCode())){ |
| | | list = sgProjectInfoMapper.progressList1(page, searchDTO); |
| | | }else { |
| | | list = sgProjectInfoMapper.progressList(page, searchDTO); |
| | | } |
| | | |
| | | List<Long> ids = list.stream().map(SgProjectInfoVO::getId).collect(Collectors.toList()); |
| | | searchDTO.setProjectIds(ids); |
| | | List<SgProjectInfoDO> projectProgress = new ArrayList<>(); |
| | | if(!searchDTO.getAdCode().isEmpty()){ |
| | | projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject1(searchDTO)); |
| | | }else { |
| | | projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | } |
| | | // List<Long> ids = list.stream().map(SgProjectInfoVO::getId).collect(Collectors.toList()); |
| | | // searchDTO.setProjectIds(ids); |
| | | // List<SgProjectInfoDO> projectProgress = new ArrayList<>(); |
| | | // if(StringUtils.isNotBlank(searchDTO.getAdCode())){ |
| | | // projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject1(searchDTO)); |
| | | // }else { |
| | | // projectProgress = getProjectProgress(sgProjectInfoMapper.queryStepByProject(searchDTO)); |
| | | // } |
| | | |
| | | if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | | Map<Long, String> progressMap = projectProgress.stream().filter(s->s!=null && s.getProjectProgress() !=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | // if (CollectionUtils.isNotEmpty(projectProgress)){ |
| | | //Map<Long, String> progressMap = projectProgress.stream().filter(s->s!=null && s.getProjectProgress() !=null).collect(Collectors.toMap(SgProjectInfoDO::getId, SgProjectInfoDO::getProjectProgress)); |
| | | list.forEach(s->{ |
| | | s.setProjectProgress(progressMap.get(s.getId())); |
| | | });} |
| | | if (StringUtils.isNotBlank(s.getProjectProgress())){ |
| | | s.setProjectProgress(s.getProjectProgress()+"%"); |
| | | }else { |
| | | s.setProjectProgress("0%"); |
| | | } |
| | | }); |
| | | // } |
| | | return page.setRecords(list); |
| | | } |
| | | |
| | | @Override |
| | | public List<SgProjectInfoDO> listAll(ProjectSearchDTO searchDTO) { |
| | | return sgProjectInfoMapper.queryPageList(null,searchDTO); |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | setDeptId(searchDTO); |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | setUnit2(searchDTO,user,roleId); |
| | | List<SgProjectInfoDO> list = sgProjectInfoMapper.queryPageList(null, searchDTO); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * setDeptId |
| | | * @param searchDTO |
| | | */ |
| | | private void setDeptId(ProjectSearchDTO searchDTO) { |
| | | String deptId = AuthUtil.getDeptId(); |
| | | boolean b = Objects.nonNull(searchDTO.getIsUnit()) && searchDTO.getIsUnit() == 1; |
| | | if (!deptId.equals("420000000000")){ |
| | | if (!b){ |
| | | searchDTO.setDeptId(deptId); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | public List<SgStatisProVO> getsgStatisticsList(String code) { |
| | | AttAdBase ywxtAdDetail = iAttAdBaseService.getYwxtAdDetail(code); |
| | | List<SgStatisProVO> sgStatisProVOS; |
| | | |
| | | |
| | | //片区 |
| | | if (ywxtAdDetail == null) { |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsZero(code); |
| | | getDeviceTypes(sgStatisProVOS); |
| | | setDeviceTypes(sgStatisProVOS); |
| | | // String getname = sgProjectInfoMapper.getname(code); |
| | | String getname = code; |
| | | updateProjectProgress(sgStatisProVOS, code, getname, "2"); |
| | | } else if (ywxtAdDetail.getAdGrad().equals("1")) {//默认 |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsOne(code); |
| | | getDeviceTypes(sgStatisProVOS); |
| | | sgStatisProVOS = getSgStatisProVOS(sgStatisProVOS); |
| | | setDeviceTypes(sgStatisProVOS); |
| | | updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getPAdCode(), ywxtAdDetail.getPAdName(), "0"); |
| | | } else {//区县 |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsList(code); |
| | | getDeviceTypes(sgStatisProVOS); |
| | | setDeviceTypes(sgStatisProVOS); |
| | | updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getAdCode(), ywxtAdDetail.getAdName(), "3"); |
| | | } |
| | | return sgStatisProVOS; |
| | | } |
| | | |
| | | /** |
| | | * 统计设备类型开工率 |
| | | * 统计施工进度 |
| | | * @param sgStatisProVOS |
| | | */ |
| | | private void getDeviceTypes(List<SgStatisProVO> sgStatisProVOS) { |
| | | private void setDeviceTypes(List<SgStatisProVO> sgStatisProVOS) { |
| | | if (CollectionUtils.isNotEmpty(sgStatisProVOS)){ |
| | | Map<String, SgOperatingRateVO> deviceTypes = getDeviceTypes(sgStatisProVOS.stream().map(SgStatisProVO::getProIds).collect(Collectors.toList())); |
| | | for (SgStatisProVO vo : sgStatisProVOS) { |
| | | String proIds = vo.getProIds(); |
| | | SgOperatingRateVO sVo = deviceTypes.get(vo.getProIds()); |
| | | if (Objects.nonNull(sVo)){ |
| | | vo.setSurfaceNum(sVo.getSurfaceNum()); |
| | | vo.setSurfaceStartNum(sVo.getSurfaceStartNum()); |
| | | vo.setSurfaceProgress(sVo.getSurfaceProgress()); |
| | | vo.setVideoNum(sVo.getVideoNum()); |
| | | vo.setVideoStartNum(sVo.getVideoStartNum()); |
| | | vo.setVideoProgress(sVo.getVideoProgress()); |
| | | vo.setTransNum(sVo.getTransNum()); |
| | | vo.setTransStartNum(sVo.getTransStartNum()); |
| | | vo.setTransProgress(sVo.getTransProgress()); |
| | | vo.setSeepageNum(sVo.getSeepageNum()); |
| | | vo.setSeepageStartNum(sVo.getSeepageStartNum()); |
| | | vo.setSeepageProgress(sVo.getSeepageProgress()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 标段排序 |
| | | * @param sgStatisProVOS |
| | | * @return |
| | | */ |
| | | private List<SgStatisProVO> getSgStatisProVOS(List<SgStatisProVO> sgStatisProVOS) { |
| | | sgStatisProVOS = sgStatisProVOS.stream() |
| | | .sorted(Comparator.comparing(s -> { |
| | | String scode = s.getCode(); |
| | | if (scode.equals("第一标段")) { |
| | | return 1; |
| | | } else if (scode.equals("第二标段")) { |
| | | return 2; |
| | | } else if (scode.equals("第三标段")) { |
| | | return 3; |
| | | } else if (scode.equals("第四标段")) { |
| | | return 4; |
| | | } else if (scode.equals("第五标段")) { |
| | | return 5; |
| | | } else { |
| | | return Integer.MAX_VALUE; |
| | | } |
| | | })) |
| | | .collect(Collectors.toList()); |
| | | return sgStatisProVOS; |
| | | } |
| | | |
| | | /** |
| | | * 统计设备类型开工率 |
| | | */ |
| | | public Map<String,SgOperatingRateVO> getDeviceTypes(List<String> projectIds) { |
| | | Map<String,SgOperatingRateVO> result = new HashMap<>(); |
| | | if (CollectionUtils.isNotEmpty(projectIds)){ |
| | | for (String proIds : projectIds) { |
| | | SgOperatingRateVO sgOperatingRateVO = new SgOperatingRateVO(); |
| | | if (StringUtils.isNotBlank(proIds)){ |
| | | List<SgStatisDeviceVO> deviceVOS = sgProjectInfoMapper.getDeviceTypes("("+proIds+")"); |
| | | if(CollectionUtils.isNotEmpty(deviceVOS)){ |
| | |
| | | if (Objects.nonNull(sg108)){ |
| | | Integer deviceCount = sg108.getDeviceCount(); |
| | | Integer deviceStart = sg108.getDeviceStart(); |
| | | vo.setSurfaceNum(deviceCount); |
| | | sgOperatingRateVO.setSurfaceNum(deviceCount); |
| | | sgOperatingRateVO.setSurfaceStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | sgOperatingRateVO.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setSeepageProgress("0%"); |
| | | sgOperatingRateVO.setSeepageProgress("0%"); |
| | | } |
| | | } |
| | | //视频 |
| | |
| | | if (Objects.nonNull(sg104)){ |
| | | Integer deviceCount = sg104.getDeviceCount(); |
| | | Integer deviceStart = sg104.getDeviceStart(); |
| | | vo.setVideoNum(deviceCount); |
| | | sgOperatingRateVO.setVideoNum(deviceCount); |
| | | sgOperatingRateVO.setVideoStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setVideoProgress(getBigDecimalPercent(divide)); |
| | | sgOperatingRateVO.setVideoProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setVideoProgress("0%"); |
| | | sgOperatingRateVO.setVideoProgress("0%"); |
| | | } |
| | | } |
| | | //渗压 |
| | |
| | | if (Objects.nonNull(sg101)){ |
| | | Integer deviceCount = sg101.getDeviceCount(); |
| | | Integer deviceStart = sg101.getDeviceStart(); |
| | | vo.setTransNum(deviceCount); |
| | | sgOperatingRateVO.setTransNum(deviceCount); |
| | | sgOperatingRateVO.setTransStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setTransProgress(getBigDecimalPercent(divide)); |
| | | sgOperatingRateVO.setTransProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setTransProgress("0%"); |
| | | sgOperatingRateVO.setTransProgress("0%"); |
| | | } |
| | | } |
| | | //渗流 |
| | |
| | | if (Objects.nonNull(sg102)){ |
| | | Integer deviceCount = sg102.getDeviceCount(); |
| | | Integer deviceStart = sg102.getDeviceStart(); |
| | | vo.setSeepageNum(deviceCount); |
| | | sgOperatingRateVO.setSeepageNum(deviceCount); |
| | | sgOperatingRateVO.setSeepageStartNum(deviceStart); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | sgOperatingRateVO.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setSeepageProgress("0%"); |
| | | sgOperatingRateVO.setSeepageProgress("0%"); |
| | | } |
| | | } |
| | | } |
| | | result.put(proIds,sgOperatingRateVO); |
| | | } |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private void updateProjectProgress(List<SgStatisProVO> sgStatisProVOS, String pcode, String pname, String adGrad) { |
| | |
| | | for (String id : ids) { |
| | | projectSearchDTO.setProjectId(id); |
| | | List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject(projectSearchDTO); |
| | | getProjectProgress(list).forEach(ss -> bigDecimals.add(ss.getProjectProgressNum())); |
| | | getProjectProgress(list).forEach(ss->{ |
| | | if (Objects.nonNull(ss.getProjectProgressNum())){ |
| | | bigDecimals.add(ss.getProjectProgressNum()); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | BigDecimal reduce = bigDecimals.stream().reduce(BigDecimal.ZERO, BigDecimal::add); |
| | |
| | | |
| | | @Override |
| | | public Map<String, Object> projectCount(ProjectSearchDTO searchDTO) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | searchDTO.setSgCodeS(sgCodeS); |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | //setUnit2(searchDTO,user,roleId); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | List<SgProjectInfoVO> progressList = progressList(searchDTO); |
| | | BigDecimal reduce = progressList.stream().filter(s->s.getProjectProgressNum()!=null).map(SgProjectInfoDO::getProjectProgressNum).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal divide = reduce.divide(BigDecimal.valueOf(progressList.size()), 2, RoundingMode.HALF_UP); |
| | | BigDecimal divide = reduce.divide(BigDecimal.valueOf(progressList.size()==0?1:progressList.size()), 2, RoundingMode.HALF_UP); |
| | | List<SgProjectInfoDO> pending = progressList.stream().filter(s -> s.getStatus() == 0).collect(Collectors.toList()); |
| | | List<SgProjectInfoDO> progress = progressList.stream().filter(s -> s.getStatus() == 1).collect(Collectors.toList()); |
| | | List<SgProjectInfoDO> over = progressList.stream().filter(s -> s.getStatus() == 2).collect(Collectors.toList()); |
| | |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(stepIdForNull); |
| | | preAcceVO.setName(sgGxStepDO.getGxStepName()); |
| | | preAcceVO.setProgramId(programId); |
| | | preAcceVO.setGxDeviceId(stepIdForNull != 25? (long)998:(long)999); |
| | | preAcceVO.setGxDeviceId(stepIdForNull != 20? (long)998:(long)999); |
| | | preAcceVO.setGxStepId(sgGxStepDO.getId()); |
| | | |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<SgProjectTreeVO> projectTree(ProjectSearchDTO dto) { |
| | | List<String> sgCodeS = getSgCodeByUser(); |
| | | dto.setSgCodeS(sgCodeS); |
| | | setAdCode(dto); |
| | | BladeUser user = AuthUtil.getUser(); |
| | | Long roleId = getRoleId(); |
| | | //setUnit2(dto,user,roleId); |
| | | List<SgProjectTreeVO> list = sgProjectInfoMapper.projectTree(dto); |
| | | if (CollectionUtils.isNotEmpty(list)){ |
| | | list.forEach(x->{ |
| | | if (StringUtils.isBlank(x.getCountyNm())){ |
| | | x.setCountyNm(x.getCityNm()); |
| | | } |
| | | if (StringUtils.isBlank(x.getTownNm())){ |
| | | x.setTownNm(x.getCountyNm()); |
| | | } |
| | | }); |
| | | // 按省、片区、市、县、乡镇分组 |
| | | Map<String, Map<String, Map<String, Map<String, Map<String, List<SgProjectTreeVO>>>>>> groupedProjects = list.stream() |
| | | .collect( |
| | | Collectors.groupingBy(SgProjectTreeVO::getProvinceNm, |
| | | Collectors.groupingBy(SgProjectTreeVO::getLot, |
| | | Collectors.groupingBy(SgProjectTreeVO::getCityNm, |
| | | Collectors.groupingBy(SgProjectTreeVO::getCountyNm, |
| | | Collectors.groupingBy(SgProjectTreeVO::getTownNm |
| | | )))))); |
| | | List<SgProjectTreeVO> tree = new ArrayList<>(); |
| | | for (Map.Entry<String, Map<String, Map<String, Map<String, Map<String, List<SgProjectTreeVO>>>>>> provinceEntry : groupedProjects.entrySet()) { |
| | | SgProjectTreeVO provinceNode = new SgProjectTreeVO(); |
| | | provinceNode.setProvinceNm(provinceEntry.getKey()); |
| | | provinceNode.setRegionName(provinceEntry.getKey()); |
| | | provinceNode.setId(UUID.randomUUID().toString().replace("-","")); |
| | | provinceNode.setLevel(1); |
| | | List<SgProjectTreeVO> provinceChildren = new ArrayList<>(); |
| | | for (Map.Entry<String, Map<String, Map<String, Map<String, List<SgProjectTreeVO>>>>> lotEntry : provinceEntry.getValue().entrySet()) { |
| | | SgProjectTreeVO lotNode = new SgProjectTreeVO(); |
| | | List<String> lotIds = new ArrayList<>(); |
| | | lotNode.setLot(lotEntry.getKey()); |
| | | lotNode.setRegionName(lotEntry.getKey()); |
| | | lotNode.setId(UUID.randomUUID().toString().replace("-","")); |
| | | lotNode.setLevel(2); |
| | | List<SgProjectTreeVO> lotChildren = new ArrayList<>(); |
| | | for (Map.Entry<String, Map<String, Map<String, List<SgProjectTreeVO>>>> cityEntry : lotEntry.getValue().entrySet()) { |
| | | SgProjectTreeVO cityNode = new SgProjectTreeVO(); |
| | | List<String> cityIds = new ArrayList<>(); |
| | | cityNode.setCityNm(cityEntry.getKey()); |
| | | cityNode.setRegionName(cityEntry.getKey()); |
| | | cityNode.setId(UUID.randomUUID().toString().replace("-","")); |
| | | cityNode.setLevel(3); |
| | | List<SgProjectTreeVO> cityChildren = new ArrayList<>(); |
| | | for (Map.Entry<String, Map<String, List<SgProjectTreeVO>>> countyEntry : cityEntry.getValue().entrySet()) { |
| | | SgProjectTreeVO countyNode = new SgProjectTreeVO(); |
| | | List<String> countyIds = new ArrayList<>(); |
| | | countyNode.setCountyNm(countyEntry.getKey()); |
| | | countyNode.setRegionName(countyEntry.getKey()); |
| | | countyNode.setId(UUID.randomUUID().toString().replace("-","")); |
| | | countyNode.setLevel(4); |
| | | List<SgProjectTreeVO> countyChildren = new ArrayList<>(); |
| | | for (Map.Entry<String, List<SgProjectTreeVO>> townEntry : countyEntry.getValue().entrySet()) { |
| | | SgProjectTreeVO townNode = new SgProjectTreeVO(); |
| | | townNode.setTownNm(townEntry.getKey()); |
| | | townNode.setRegionName(townEntry.getKey()); |
| | | townNode.setChildList(townEntry.getValue()); |
| | | townNode.setChildNum((long) townEntry.getValue().size()); |
| | | townNode.setId(UUID.randomUUID().toString().replace("-","")); |
| | | townNode.setLevel(5); |
| | | townNode.setProjectIds(townEntry.getValue().stream().map(SgProjectTreeVO::getId).collect(Collectors.toList())); |
| | | countyIds.addAll(townNode.getProjectIds()); |
| | | countyChildren.add(townNode); |
| | | } |
| | | countyNode.setChildNum(countyChildren.stream().mapToLong(SgProjectTreeVO::getChildNum).sum()); |
| | | countyNode.setChildList(countyChildren); |
| | | countyNode.setProjectIds(countyIds); |
| | | cityIds.addAll(countyIds); |
| | | cityChildren.add(countyNode); |
| | | } |
| | | cityNode.setChildNum(cityChildren.stream().mapToLong(SgProjectTreeVO::getChildNum).sum()); |
| | | cityNode.setChildList(cityChildren); |
| | | cityNode.setProjectIds(cityIds); |
| | | lotIds.addAll(cityIds); |
| | | lotChildren.add(cityNode); |
| | | } |
| | | lotNode.setChildNum(lotChildren.stream().mapToLong(SgProjectTreeVO::getChildNum).sum()); |
| | | lotNode.setChildList(lotChildren); |
| | | lotNode.setProjectIds(lotIds); |
| | | provinceChildren.add(lotNode); |
| | | } |
| | | provinceNode.setChildNum(provinceChildren.stream().mapToLong(SgProjectTreeVO::getChildNum).sum()); |
| | | provinceNode.setChildList(provinceChildren); |
| | | tree.add(provinceNode); |
| | | } |
| | | List<SgProjectTreeVO> childList = tree.get(0).getChildList(); |
| | | List<SgProjectTreeVO> collect = childList.stream() |
| | | .sorted(Comparator.comparing(s -> { |
| | | String scode = s.getRegionName(); |
| | | if (scode.equals("第一标段")) { |
| | | return 1; |
| | | } else if (scode.equals("第二标段")) { |
| | | return 2; |
| | | } else if (scode.equals("第三标段")) { |
| | | return 3; |
| | | } else if (scode.equals("第四标段")) { |
| | | return 4; |
| | | } else if (scode.equals("第五标段")) { |
| | | return 5; |
| | | } else { |
| | | return Integer.MAX_VALUE; |
| | | } |
| | | })) |
| | | .collect(Collectors.toList()); |
| | | tree.get(0).setChildList(collect); |
| | | return tree; |
| | | |
| | | } |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | private void setAdCode(ProjectSearchDTO dto) { |
| | | String deptId = AuthUtil.getDeptId(); |
| | | Long roleId = sgProgressReportService.getRoleId(); |
| | | if(roleId.equals(1811657352658042882L)){ |
| | | dto.setAdCode(deptId); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ResVO> resList(IPage<ResVO> page, ProjectSearchDTO dto) { |
| | | List<String> sgCodeByUser = getSgCodeByUser(); |
| | | dto.setSgCodeS(sgCodeByUser); |
| | | return page.setRecords(baseMapper.resList(page,dto)); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void delete(String ids) { |
| | | List<String> list = Arrays.asList(ids.split(",")); |
| | | list.forEach(id->{ |
| | | List<SgProgressReportDO> reportDOS = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getProframId, id).list(); |
| | | if (CollectionUtils.isNotEmpty(reportDOS)){ |
| | | SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(id); |
| | | throw new ServiceException(sgProjectInfoDO.getProjectName() + "存在施工审批,无法删除!"); |
| | | } |
| | | sgProjectInfoMapper.deleteById(id); |
| | | }); |
| | | } |
| | | |
| | | } |
| | |
| | | @TableField("\"plan_url\"") |
| | | private String planUrl; |
| | | |
| | | @TableField("\"plan_name\"") |
| | | private String planName; |
| | | |
| | | //方案批复,逗号分隔字符串xxxx,xxxx |
| | | @TableField("\"plan_feed_back_url\"") |
| | | private String planFeedBackUrl; |
| | | |
| | | @TableField("\"plan_feed_back_name\"") |
| | | private String planFeedBackName; |
| | | |
| | | //是否政府采购,1是;2否 |
| | | @TableField("\"is_gov_purchase\"") |
| | |
| | | @TableField("\"gov_url\"") |
| | | private String govUrl; |
| | | |
| | | @TableField("\"gov_name\"") |
| | | private String govName; |
| | | |
| | | //合同签订时间 |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | |
| | | //合同附件 |
| | | @TableField("\"contract_url\"") |
| | | private String contractUrl; |
| | | |
| | | @TableField("\"contract_name\"") |
| | | private String contractName; |
| | | |
| | | //计划验收时间 |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | |
| | | @TableField("\"check_url\"") |
| | | private String checkUrl; |
| | | |
| | | @TableField("\"check_name\"") |
| | | private String checkName; |
| | | |
| | | //是否校验 |
| | | @TableField("\"check_state\"") |
| | | private String checkState; |
| | |
| | | @TableField("\"actual_fund\"") |
| | | private double actualFund; |
| | | |
| | | //附件名称 |
| | | @TableField("\"pay_order_name\"") |
| | | private String payOrderName; |
| | | //附件url |
| | | @TableField("\"pay_order_url\"") |
| | | private String payOrderUrl; |
| | | |
| | | //创建人 |
| | | @TableField("\"create_user\"") |
| | | private String createUser; |
| | |
| | | * @return |
| | | */ |
| | | int getDimResInfoACount(); |
| | | int getAttWmstBaseCount(); |
| | | int getAttImagestBaseCount(); |
| | | int getAttCdBaseCount(); |
| | | int getAttWyCdBaseCount(); |
| | | |
| | | Boolean updateIsShowStatus(@Param("ids") String ids, @Param("isShow") Integer status); |
| | | |
| | |
| | | <select id="selectAttResBaseGeneralInvestigation" |
| | | resultType="cn.gistack.sm.sjztmd.vo.AttResBaseGeneralInvestigationVO"> |
| | | |
| | | SELECT base.* from ( |
| | | SELECT base.* from ( |
| | | select |
| | | a.*, |
| | | b."check_state" AS tb_state, |
| | |
| | | left join ywxt."att_ad_base" city on county."p_ad_code" = city."ad_code" |
| | | left join ywxt."att_ad_base" province on city."p_ad_code" = province."ad_code" |
| | | left join "SJZT_MD"."tb_res_general_investigation_state" b on a."code" = b."res_guid" |
| | | <if test="attResBase.tbYear !=null and attResBase.tbYear !=''"> |
| | | AND b."tb_year" = #{attResBase.tbYear} |
| | | </if> |
| | | <if test="attResBase.tbQuarter !=null and attResBase.tbQuarter !=''"> |
| | | AND b."tb_quarter" = #{attResBase.tbQuarter} |
| | | </if> |
| | | |
| | | left join |
| | | |
| | |
| | | <if test="attResBase.tbYear !=null and attResBase.tbYear !=''"> |
| | | AND TRGI."tb_year" = #{attResBase.tbYear} |
| | | </if> |
| | | <if test="attResBase.tbQuarter !=null and attResBase.tbQuarter !=''"> |
| | | AND TRGI."tb_quarter" = #{attResBase.tbQuarter} |
| | | </if> |
| | | group by TRGI."tb_state_id",TRGI."res_guid" |
| | | |
| | | ) tmp on tmp."tb_state_id" = b."guid" |
| | | |
| | | where 1 = 1 |
| | | <if test="attResBase.tbQuarter !=null and attResBase.tbQuarter !=''"> |
| | | AND b."tb_quarter" = #{attResBase.tbQuarter} |
| | | </if> |
| | | <if test="attResBase.name !=null and attResBase.name !=''"> |
| | | AND a."name" LIKE CONCAT('%',#{attResBase.name},'%') |
| | | </if> |
| | |
| | | left join "att_ad_base" county on town."p_ad_code" = county."ad_code" |
| | | left join "att_ad_base" city on county."p_ad_code" = city."ad_code" |
| | | left join "att_ad_base" province on city."p_ad_code" = province."ad_code" |
| | | left join "att_res_rsb_norspi" arrn on arb."guid" = arrn."res_guid" |
| | | left join ( |
| | | SELECT *, |
| | | ROW_NUMBER() OVER(PARTITION BY "res_guid" ORDER BY "res_guid") AS rn |
| | | from "att_res_rsb_norspi" arrn |
| | | ) arrn on arb."guid" = arrn."res_guid" AND arrn.rn = 1 |
| | | WHERE arb."is_deleted"=0 |
| | | <if test="obj.code != null and obj.code != '' "> |
| | | and (town."ad_code" = #{obj.code} or county."ad_code" = #{obj.code} or city."ad_code" = #{obj.code} or province."ad_code" |
| | |
| | | from sjzt_dw."dim_res_info_a" |
| | | </select> |
| | | |
| | | <select id="getAttWmstBaseCount" resultType="java.lang.Integer"> |
| | | select count(*) from sjzt_md."att_wmst_base" |
| | | </select> |
| | | |
| | | <select id="getAttImagestBaseCount" resultType="java.lang.Integer"> |
| | | select count(*) from sjzt_md."att_imagest_base" |
| | | </select> |
| | | |
| | | <select id="getAttCdBaseCount" resultType="java.lang.Integer"> |
| | | select count(*) from sjzt_md."att_cd_base" |
| | | </select> |
| | | |
| | | <select id="getAttWyCdBaseCount" resultType="java.lang.Integer"> |
| | | select count(*) from sjzt_md."att_wy_cd_base" |
| | | </select> |
| | | |
| | | |
| | | <update id="updateIsShowStatus"> |
| | | UPDATE SJZT_MD."att_res_base" SET "is_show" = #{isShow} |
| | |
| | | |
| | | SELECT |
| | | COUNT(*) totalNum, |
| | | SUM(CASE WHEN (tdis."check_state" = 3) THEN 1 ELSE 0 END) as finishNum |
| | | SUM(CASE WHEN (tdis."check_state" >= 2) THEN 1 ELSE 0 END) as finishNum |
| | | from |
| | | SJZT_MD."tb_res_dyke" trd |
| | | LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" = 3) |
| | | LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" >= 2) |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND tdis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | LEFT JOIN YWXT."att_ad_base" aab ON aab."ad_code" = trd."ad_code" |
| | | WHERE |
| | |
| | | CASE WHEN dykeTmp.termiteLength THEN dykeTmp.termiteLength ELSE 0 END as termiteLength |
| | | FROM |
| | | sjzt_md."tb_res_dyke" trd |
| | | LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" = 1 or tdis."check_state" = 2) |
| | | LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" >= 2) |
| | | LEFT JOIN ( |
| | | SELECT |
| | | TEMP1.*, |
| | |
| | | <if test="params.tbYear!=null and params.tbYear!=''"> |
| | | AND tdi."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND tdi."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | -- and tdi."investigation_variety" = '白蚁' |
| | | group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit" |
| | | )TEMP1 |
| | |
| | | <select id="listDykeUnitDanger" resultType="cn.gistack.sm.sjztmd.vo.TbDykeUnitDangerVO"> |
| | | select tdi.*,ifnull(tdud."danger_level",0) dangerLevel,tdud."id" from ( |
| | | select |
| | | "dyke_guid" dykeGuid,"unit",count(*) dangerNum,wm_concat(distinct "signs_of_termite_activity") hdjxs, |
| | | "dyke_guid" dykeGuid,"unit",count(*) dangerNum,wm_concat(distinct "signs_of_termite_activity") hdjxs,max("tb_year") as "tb_year",max("tb_quarter") as "tb_quarter", |
| | | sum("danger_length") as dangerLength |
| | | from sjzt_md."tb_dyke_investigation" |
| | | where "hazard_rating" = '有危害' |
| | | <if test="params.dykeGuid != null and params.dykeGuid != ''"> |
| | | and "dyke_guid" = #{params.dykeGuid} |
| | | </if> |
| | | <if test="params.tbYear != null and params.tbYear != ''"> |
| | | and "tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter != ''"> |
| | | and "tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | group by "dyke_guid","unit" |
| | | ) tdi |
| | | left join sjzt_md."tb_dyke_unit_danger" tdud on (tdi.dykeGuid = tdud."dyke_id" and tdi."unit" = tdud."unit") |
| | | left join sjzt_md."tb_dyke_unit_danger" tdud on (tdi.dykeGuid = tdud."dyke_id" and tdi."unit" = tdud."unit" and tdi."tb_year" = tdud."tb_year" and tdi."tb_quarter" = tdud."tb_quarter") |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | <select id="getList" resultType="cn.gistack.sm.sjztmd.vo.TbProjectVO"> |
| | | |
| | | SELECT |
| | | * |
| | | tb.*,b."actual_fund" |
| | | FROM SJZT_MD."tb_project" tb |
| | | left join ( |
| | | SELECT "tb_project_id",sum("actual_fund") as "actual_fund" from SJZT_MD."tb_project_schedule" |
| | | <if test="vo.tbYear != null and vo.tbYear != ''"> |
| | | where "year" = #{vo.tbYear} |
| | | </if> |
| | | group by "tb_project_id" |
| | | ) b |
| | | on (tb."guid" = b."tb_project_id") |
| | | where |
| | | tb."is_deleted" = 0 |
| | | <if test="vo.tbYear != null and vo.tbYear != ''"> |
| | | and tb."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.cityCode != null and vo.cityCode != ''"> |
| | | and tb."city_code" = #{vo.cityCode} |
| | | </if> |
| | |
| | | <result property="contractUrl" column="contract_url"/> |
| | | <result property="checkDate" column="check_date"/> |
| | | <result property="planCheckDate" column="plan_check_date"/> |
| | | <result property="planName" column="plan_name"/> |
| | | <result property="planFeedBackName" column="plan_feed_back_name"/> |
| | | <result property="govName" column="gov_name"/> |
| | | <result property="contractName" column="contract_name"/> |
| | | <result property="checkName" column="check_name"/> |
| | | |
| | | <result property="isCheck" column="is_check"/> |
| | | <result property="checkUrl" column="check_url"/> |
| | |
| | | <result property="year" column="year"/> |
| | | <result property="month" column="month"/> |
| | | <result property="actualFund" column="actual_fund"/> |
| | | <result property="payOrderUrl" column="pay_order_url"/> |
| | | <result property="payOrderName" column="pay_order_name"/> |
| | | </collection> |
| | | </resultMap> |
| | | |
| | |
| | | TPS."guid" as scheduleId, |
| | | TPS."year", |
| | | TPS."month", |
| | | TPS."actual_fund" |
| | | TPS."actual_fund",TPS."pay_order_name",TPS."pay_order_url" |
| | | from sjzt_md."tb_project" tb |
| | | LEFT JOIN SJZT_MD."tb_project_schedule" TPS ON TPS."tb_project_id" = tb."guid" |
| | | where |
| | |
| | | levelTwoLength, |
| | | levelThreeLength, |
| | | levelFourLength, |
| | | levelFiveLength |
| | | levelFiveLength, |
| | | dykeLengthAll, |
| | | levelOneLengthAll, |
| | | levelTwoLengthAll, |
| | | levelThreeLengthAll, |
| | | levelFourLengthAll, |
| | | levelFiveLengthAll |
| | | FROM YWXT."att_ad_base" aab |
| | | left join ( |
| | | SELECT |
| | |
| | | ) arb ON ((arb.townCode = aab."guid")or(arb.countyCode = aab."guid") or (arb.cityCode = aab."guid") or (arb.provinceCode = aab."guid") ) |
| | | right join sjzt_md."tb_res_general_investigation_state" trgis on trgis."res_guid" = arb."code" |
| | | <!--统计待审核和已审核的--> |
| | | and (trgis."check_state" = 2) |
| | | and (trgis."check_state" >= 2) |
| | | <if test="params.tbYear != null and params.tbYear != ''"> |
| | | and trgis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter != ''"> |
| | | and trgis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | group by aab."guid",aab."ad_name" |
| | | )res on res."guid" = aab."guid" |
| | |
| | | <if test="params.tbYear != null and params.tbYear != ''"> |
| | | AND tdi."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter != ''"> |
| | | and tdi."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit" |
| | | )TEMP1 |
| | | ) tdi on tdi."tb_state_id" = tdis."guid" |
| | | <!--统计待审核和已审核的--> |
| | | where (tdis."check_state" = 1 or tdis."check_state" = 2) |
| | | where (tdis."check_state" >= 2) |
| | | ) trd |
| | | LEFT JOIN YWXT."att_ad_base" county ON county."ad_code" = trd."ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" city ON city."ad_code" = county."p_ad_code" |
| | |
| | | )trd on ((trd.countyCode = aab."guid") or (trd.cityCode = aab."guid") or (trd.provinceCode = aab."guid")) |
| | | group by aab."guid",aab."ad_name" |
| | | )dyke on dyke."guid" = aab."guid" |
| | | |
| | | left join ( |
| | | SELECT |
| | | aab."guid", |
| | | aab."ad_name", |
| | | SUM(CASE WHEN tb."actual_fund" then tb."actual_fund" else 0 end) as totalActualFund |
| | | SUM(CASE WHEN trd."guid" is not null then trd."dyke_length" else 0 END) as dykeLengthAll, |
| | | SUM(CASE WHEN trd."dyke_level" = '1级' THEN trd."dyke_length" ELSE 0 END) AS levelOneLengthAll, |
| | | SUM(CASE WHEN trd."dyke_level" = '2级' THEN trd."dyke_length" ELSE 0 END) AS levelTwoLengthAll, |
| | | SUM(CASE WHEN trd."dyke_level" = '3级' THEN trd."dyke_length" ELSE 0 END)AS levelThreeLengthAll, |
| | | SUM(CASE WHEN trd."dyke_level" = '4级' THEN trd."dyke_length" ELSE 0 END) AS levelFourLengthAll, |
| | | SUM(CASE WHEN trd."dyke_level" = '5级' THEN trd."dyke_length" ELSE 0 END) AS levelFiveLengthAll |
| | | FROM YWXT."att_ad_base" aab |
| | | left join ( |
| | | select trd."guid", |
| | | trd."dyke_length", |
| | | trd."dyke_level", |
| | | county."guid" as countyCode, |
| | | city."guid" as cityCode, |
| | | province."guid" as provinceCode |
| | | from sjzt_md."tb_res_dyke" trd |
| | | LEFT JOIN YWXT."att_ad_base" county ON county."ad_code" = trd."ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" city ON city."ad_code" = county."p_ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" province ON province."ad_code" = city."p_ad_code" |
| | | ) trd on ((trd.countyCode = aab."guid") or (trd.cityCode = aab."guid") or (trd.provinceCode = aab."guid")) |
| | | group by aab."guid",aab."ad_name" |
| | | ) dykeAll on dykeAll."guid" = aab."guid" |
| | | |
| | | left join ( |
| | | SELECT |
| | | aab."guid", |
| | | aab."ad_name", |
| | | SUM(CASE WHEN tb."center_fund" then tb."center_fund" else 0 end) + SUM(CASE WHEN tb."local_fund" then tb."local_fund" else 0 end) as totalActualFund |
| | | FROM YWXT."att_ad_base" aab |
| | | LEFT JOIN ( |
| | | select |
| | | tb."city_code" cityCode, |
| | | tb."county_code" countyCode, |
| | | province."guid" provinceCode, |
| | | tps."actual_fund" |
| | | tb."center_fund", |
| | | tb."local_fund" |
| | | from sjzt_md."tb_project" tb |
| | | LEFT JOIN SJZT_MD."tb_project_schedule" tps on tps."tb_project_id" = tb."guid" |
| | | LEFT JOIN YWXT."att_ad_base" province ON province."ad_code" = tb."city_code" |
| | | <where> |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND tb."tb_year" = #{params.tbYear} |
| | | </if> |
| | | </where> |
| | | )tb on ((tb.countyCode = aab."guid") or (tb.cityCode = aab."guid") or (tb.provinceCode = aab."guid")) |
| | | group by aab."guid",aab."ad_name" |
| | | ) project on project."guid" = aab."guid" |
| | | |
| | | left join ( |
| | | SELECT |
| | | aab."guid", |
| | | aab."ad_name", |
| | | tb."actual_fund" curMonthActualFund |
| | | aab."guid", |
| | | aab."ad_name", |
| | | sum(CASE WHEN tb."actual_fund" then tb."actual_fund" else 0 end) curMonthActualFund |
| | | FROM YWXT."att_ad_base" aab |
| | | LEFT JOIN ( |
| | | select |
| | |
| | | tb."county_code" countyCode, |
| | | province."guid" provinceCode, |
| | | tps."actual_fund" |
| | | from sjzt_md."tb_project" tb |
| | | LEFT JOIN SJZT_MD."tb_project_schedule" tps on tps."tb_project_id" = tb."guid" |
| | | LEFT JOIN YWXT."att_ad_base" province ON province."ad_code" = tb."city_code" |
| | | where |
| | | 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND tps."year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth != ''"> |
| | | and tps."month" = #{params.tbMonth} |
| | | </if> |
| | | from sjzt_md."tb_project" tb |
| | | LEFT JOIN SJZT_MD."tb_project_schedule" tps on tps."tb_project_id" = tb."guid" |
| | | LEFT JOIN YWXT."att_ad_base" province ON province."ad_code" = tb."city_code" |
| | | where 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND tps."year" = #{params.tbYear} |
| | | </if> |
| | | )tb on ((tb.countyCode = aab."guid") or (tb.cityCode = aab."guid") or (tb.provinceCode = aab."guid")) |
| | | group by aab."guid",aab."ad_name" |
| | | ) tps on tps."guid" = aab."guid" |
| | | left join ywxt."att_ad_base" paab on paab."guid" = aab."p_ad_code" |
| | | where |
| | |
| | | </if> |
| | | </select> |
| | | <select id="getStatisticsPie" resultType="cn.gistack.sm.sjztmd.vo.StatisticsPrice"> |
| | | SELECT |
| | | sum( |
| | | NVL ( a."center_fund", 0 )+ NVL ( a."local_fund", 0 )) AS sumPrice, |
| | | sum( |
| | | NVL ( b."actual_fund", 0 )) sumPay, |
| | | sum( |
| | | NVL ( a."center_fund", 0 )+ NVL ( a."local_fund", 0 ))- sum( |
| | | NVL ( b."actual_fund", 0 )) noPay |
| | | FROM |
| | | SELECT |
| | | sum( |
| | | NVL ( a."center_fund", 0 )+ NVL ( a."local_fund", 0 )) AS sumPrice, |
| | | sum( |
| | | NVL ( b."actual_fund", 0 )) sumPay, |
| | | sum( |
| | | NVL ( a."center_fund", 0 )+ NVL ( a."local_fund", 0 ))- sum( |
| | | NVL ( b."actual_fund", 0 )) noPay |
| | | FROM |
| | | sjzt_md."tb_project" a |
| | | LEFT JOIN ( SELECT * FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | ) b ON a."guid" = b."tb_project_id" and a."check_state" = 3 |
| | | LEFT JOIN ( |
| | | SELECT "tb_project_id",sum("actual_fund") "actual_fund" FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | group by "tb_project_id" |
| | | ) b ON a."guid" = b."tb_project_id" |
| | | </select> |
| | | <select id="getStatisticsPies" resultType="cn.gistack.sm.sjztmd.vo.StatisticsPrice"> |
| | | SELECT |
| | |
| | | NVL ( b."actual_fund", 0 )) noPay |
| | | FROM |
| | | sjzt_md."tb_project" a |
| | | LEFT JOIN ( SELECT * FROM sjzt_md."tb_project_schedule" |
| | | LEFT JOIN ( |
| | | SELECT "tb_project_id",sum("actual_fund") "actual_fund" FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | ) b ON a."guid" = b."tb_project_id" and a."check_state" = 3 |
| | | group by "tb_project_id" |
| | | ) b ON a."guid" = b."tb_project_id" |
| | | LEFT JOIN YWXT."att_ad_base" c ON ( a."city_code" = c."guid" ) |
| | | OR ( a."county_code" = c."guid" ) |
| | | WHERE |
| | |
| | | NVL ( b."actual_fund", 0 )) noPay |
| | | FROM |
| | | sjzt_md."tb_project" a |
| | | LEFT JOIN ( SELECT * FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | ) b ON a."guid" = b."tb_project_id" and a."check_state" = 3 |
| | | LEFT JOIN ( |
| | | SELECT "tb_project_id",sum("actual_fund") "actual_fund" FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | group by "tb_project_id" |
| | | ) b ON a."guid" = b."tb_project_id" |
| | | RIGHT JOIN YWXT."att_ad_base" c on c."ad_code" = a."city_code" |
| | | where c."p_ad_code" = #{params.adCode} |
| | | GROUP BY |
| | |
| | | NVL ( b."actual_fund", 0 )) noPay |
| | | FROM |
| | | sjzt_md."tb_project" a |
| | | LEFT JOIN ( SELECT * FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | ) b ON a."guid" = b."tb_project_id" and a."check_state" = 3 |
| | | LEFT JOIN ( |
| | | SELECT "tb_project_id",sum("actual_fund") "actual_fund" FROM sjzt_md."tb_project_schedule" |
| | | WHERE 1=1 |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND "year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbMonth != null and params.tbMonth !=''"> |
| | | AND "month" = #{params.tbMonth} |
| | | </if> |
| | | group by "tb_project_id" |
| | | ) b ON a."guid" = b."tb_project_id" |
| | | GROUP BY |
| | | a."county_code", |
| | | a."county_name", |
| | |
| | | <!-- 堤防普查列表 --> |
| | | <select id="findTbResDykePcBy" |
| | | resultType="cn.gistack.sm.sjztmd.vo.TbResDykeVO"> |
| | | SELECT base.* from ( |
| | | SELECT base.* from ( |
| | | select |
| | | trd.*, |
| | | tdis."check_state" AS tb_state, |
| | |
| | | ifnull(tmp.totalDangerDw,0) totalDangerDw, |
| | | ( |
| | | select sum(tdud."danger_length") from sjzt_md."tb_dyke_unit_danger" tdud |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis on (tdud."dyke_id" = tdis."dyke_guid") |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis |
| | | on ( |
| | | tdud."dyke_id" = tdis."dyke_guid" |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdis."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | ) |
| | | where trd."guid" = tdud."dyke_id" and tdud."danger_level" = 1 and tdis."check_state" > 1 |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdud."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdud."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | ) as firstLength, |
| | | ( |
| | | select sum(tdud."danger_length") from sjzt_md."tb_dyke_unit_danger" tdud |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis on (tdud."dyke_id" = tdis."dyke_guid") |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis |
| | | on ( |
| | | tdud."dyke_id" = tdis."dyke_guid" |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdis."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | ) |
| | | where trd."guid" = tdud."dyke_id" and tdud."danger_level" = 2 and tdis."check_state" > 1 |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdud."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdud."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | ) as secondLength, |
| | | ( |
| | | select sum(tdud."danger_length") from sjzt_md."tb_dyke_unit_danger" tdud |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis on (tdud."dyke_id" = tdis."dyke_guid") |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis |
| | | on ( |
| | | tdud."dyke_id" = tdis."dyke_guid" |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdis."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | ) |
| | | where trd."guid" = tdud."dyke_id" and tdud."danger_level" = 3 and tdis."check_state" > 1 |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdud."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdud."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | ) as thirdLength |
| | | |
| | | from sjzt_md."tb_res_dyke" trd |
| | | left join "SJZT_MD"."tb_dyke_investigation_state" tdis on trd."guid" = tdis."dyke_guid" |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdis."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | |
| | | left join YWXT."att_ad_base" aa on aa."guid" = trd."ad_code" |
| | | left join YWXT."att_ad_base" ab on ab."ad_code" = aa."p_ad_code" |
| | | left join YWXT."att_ad_base" ac on ac."ad_code" = ab."p_ad_code" |
| | |
| | | <if test="vo.tbYear !=null and vo.tbYear !=''"> |
| | | AND tdi."tb_year" = #{vo.tbYear} |
| | | </if> |
| | | <if test="vo.tbQuarter !=null and vo.tbQuarter !=''"> |
| | | AND tdi."tb_quarter" = #{vo.tbQuarter} |
| | | </if> |
| | | group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit" |
| | | )TEMP1 |
| | | )temp2 group by |
| | |
| | | FROM( |
| | | SELECT |
| | | COUNT(*) totalNum, |
| | | SUM(CASE WHEN (trgis."check_state" = 3) THEN 1 ELSE 0 END) as finishNum |
| | | SUM(CASE WHEN (trgis."check_state" >= 2) THEN 1 ELSE 0 END) as finishNum |
| | | from |
| | | <include refid="resBase"/> |
| | | LEFT JOIN SJZT_MD."tb_res_general_investigation_state" trgis ON trgis."res_guid" = arb."code" AND (trgis."check_state" = 3) |
| | | LEFT JOIN SJZT_MD."tb_res_general_investigation_state" trgis ON trgis."res_guid" = arb."code" AND (trgis."check_state" >= 2) |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND trgis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND trgis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | WHERE 1=1 |
| | | <if test="params.adCode != null and params.adCode !=''"> |
| | |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | AND TRGI."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND TRGI."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | group by TRGI."tb_state_id",TRGI."res_guid" |
| | | ) tmp on tmp."tb_state_id" = trgis."guid" |
| | | LEFT JOIN SJZT_MD."att_res_base" arb on arb."code" = trgis."res_guid" |
| | |
| | | LEFT JOIN YWXT."att_ad_base" province ON province."ad_code" = city."p_ad_code" |
| | | where (town."ad_code" = aab."guid" or county."ad_code" = aab."guid" or city."ad_code" = aab."guid" or province."ad_code" = aab."guid") |
| | | <!--只有已审核数据才显示--> |
| | | and (trgis."check_state" = 3 and totalDangerNum > 0) |
| | | and (trgis."check_state" >= 2 and totalDangerNum > 0) |
| | | ) |
| | | ) dangerNum |
| | | FROM YWXT."att_ad_base" aab |
| | |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | and trgis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND trgis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | and (trgis."check_state" > 1) |
| | | )investigationResNum, |
| | | ( |
| | |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | and trgis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | and trgis."check_state" = 3 |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND trgis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | and trgis."check_state" >= 2 |
| | | )checkResNum, |
| | | ( |
| | | SELECT COUNT(*) FROM |
| | |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | and trgis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | and trgis."check_state" = 3 and trgis.dangerNum is not null |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND trgis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | and trgis."check_state" >= 2 and trgis.dangerNum is not null |
| | | )resMayiNum, |
| | | ( |
| | | SELECT COUNT(*) |
| | |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | and tdis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | and (tdis."check_state" = 1 or tdis."check_state" = 2 or tdis."check_state" = 3) |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | and (tdis."check_state" >=1) |
| | | )investigationDykeNum, |
| | | ( |
| | | SELECT COUNT(*) FROM |
| | |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | and tdis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | and (tdis."check_state" = 2 or tdis."check_state" = 3) |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | and (tdis."check_state" >= 2) |
| | | )checkDykeNum, |
| | | IFNULL( |
| | | ( |
| | |
| | | <where> |
| | | <if test="params.tbYear != null and params.tbYear !=''"> |
| | | and tdis."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND tdis."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | and tdis."check_state" >= 2 |
| | | </where> |
| | |
| | | <if test="params.tbYear != null and params.tbYear != ''"> |
| | | AND tdi."tb_year" = #{params.tbYear} |
| | | </if> |
| | | <if test="params.tbQuarter != null and params.tbQuarter !=''"> |
| | | AND tdi."tb_quarter" = #{params.tbQuarter} |
| | | </if> |
| | | group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit" |
| | | )TEMP1 |
| | | ) tdi on tdi."tb_state_id" = tdis."guid" |
| | | where (tdis."check_state" = 3) |
| | | where (tdis."check_state" >= 2) |
| | | ) trd |
| | | LEFT JOIN YWXT."att_ad_base" county ON county."ad_code" = trd."ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" city ON city."ad_code" = county."p_ad_code" |
| | |
| | | AttResAdVO getWaterRegionInfoByResGuid(String guid); |
| | | |
| | | int getDimResInfoACount(); |
| | | int getAttWmstBaseCount(); |
| | | int getAttImagestBaseCount(); |
| | | int getAttCdBaseCount(); |
| | | int getAttWyCdBaseCount(); |
| | | |
| | | Boolean updateIsShowStatus(String ids, Integer status); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public int getAttWmstBaseCount() { |
| | | return baseMapper.getAttWmstBaseCount(); |
| | | } |
| | | |
| | | @Override |
| | | public int getAttImagestBaseCount() { |
| | | return baseMapper.getAttImagestBaseCount(); |
| | | } |
| | | |
| | | @Override |
| | | public int getAttCdBaseCount() { |
| | | return baseMapper.getAttCdBaseCount(); |
| | | } |
| | | |
| | | @Override |
| | | public int getAttWyCdBaseCount() { |
| | | return baseMapper.getAttWyCdBaseCount(); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean updateIsShowStatus(String ids, Integer status) { |
| | | return baseMapper.updateIsShowStatus(ids,status); |
| | | } |
| | |
| | | import java.io.IOException; |
| | | import java.text.DecimalFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | QueryWrapper queryWrapper = new QueryWrapper(); |
| | | queryWrapper.eq("\"dyke_guid\"",entity.getDykeGuid()); |
| | | queryWrapper.eq("\"tb_year\"",entity.getTbYear()); |
| | | // queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | TbDykeInvestigationState state = tbDykeInvestigationStateService.getOne(queryWrapper); |
| | | if (null == state) { |
| | | state = new TbDykeInvestigationState(); |
| | | state.setDykeGuid(entity.getDykeGuid()); |
| | | state.setTbQuarter(entity.getTbQuarter()); |
| | | state.setTbYear(entity.getTbYear()); |
| | | state.setCreateTime(entity.getCreateTime()); |
| | | state.setCreateUser(entity.getCreateUser()); |
| | | state.setCreateTime(new Date()); |
| | | state.setCreateUser(AuthUtil.getUserAccount()); |
| | | } else { |
| | | if (state.getCheckState() == 1 || state.getCheckState() == 2) { |
| | | return R.fail(entity.getDykeName() + "本年度已经普查完成,不能在提交了。"); |
| | | if (state.getCheckState() > 1) { |
| | | return R.fail(entity.getDykeName() + "本年度已经普查完成,不能再提交了。"); |
| | | } |
| | | } |
| | | |
| | |
| | | QueryWrapper qw = new QueryWrapper(); |
| | | qw.eq("\"dyke_guid\"",entity.getDykeGuid()); |
| | | qw.eq("\"unit\"",entity.getUnit()); |
| | | qw.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | long count = count(qw); |
| | | if (count > 0) { |
| | | entity.setDangerLength(0D); |
| | |
| | | QueryWrapper queryWrapper = new QueryWrapper(); |
| | | queryWrapper.eq("\"dyke_guid\"",entity.getDykeGuid()); |
| | | queryWrapper.eq("\"tb_year\"",entity.getTbYear()); |
| | | queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | TbDykeInvestigationState state = tbDykeInvestigationStateService.getOne(queryWrapper); |
| | | if (null == state) { |
| | | //无填报状态记录则新建 |
| | |
| | | state.setDykeGuid(entity.getDykeGuid()); |
| | | state.setTbQuarter(entity.getTbQuarter()); |
| | | state.setTbYear(entity.getTbYear()); |
| | | state.setCreateTime(entity.getCreateTime()); |
| | | state.setCreateUser(entity.getCreateUser()); |
| | | state.setCreateTime(new Date()); |
| | | state.setCreateUser(AuthUtil.getUserAccount()); |
| | | } else { |
| | | //查看填报状态,只有0填报中才可以一直填报 |
| | | if (state.getCheckState() == 1 || state.getCheckState() == 2) { |
| | | return R.fail(entity.getDykeName() + "本年度已经普查完成,不能在提交了。"); |
| | | if (state.getCheckState() > 1) { |
| | | return R.fail(entity.getDykeName() + "本年度已经普查完成,不能再提交了。"); |
| | | } |
| | | } |
| | | |
| | |
| | | import java.io.IOException; |
| | | import java.text.DecimalFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | QueryWrapper queryWrapper = new QueryWrapper(); |
| | | queryWrapper.eq("\"res_guid\"", entity.getResGuid()); |
| | | queryWrapper.eq("\"tb_year\"", entity.getTbYear()); |
| | | // queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | TbResGeneralInvestigationState state = tbResGeneralInvestigationStateService.getOne(queryWrapper); |
| | | if (null == state) { |
| | | state = new TbResGeneralInvestigationState(); |
| | | state.setResGuid(entity.getResGuid()); |
| | | state.setTbQuarter(entity.getTbQuarter()); |
| | | state.setTbYear(entity.getTbYear()); |
| | | state.setCreateTime(entity.getCreateTime()); |
| | | state.setCreateUser(entity.getCreateUser()); |
| | | state.setCreateTime(new Date()); |
| | | state.setCreateUser(AuthUtil.getUserAccount()); |
| | | } else { |
| | | if (state.getCheckState() == 1 || state.getCheckState() == 2) { |
| | | return R.fail(entity.getResName() + "本年度已经普查完成,不能在提交了。"); |
| | | if (state.getCheckState() > 1) { |
| | | return R.fail(entity.getResName() + "本年度已经普查完成,不能再提交了。"); |
| | | } |
| | | } |
| | | |
| | |
| | | QueryWrapper queryWrapper = new QueryWrapper(); |
| | | queryWrapper.eq("\"res_guid\"", entity.getResGuid()); |
| | | queryWrapper.eq("\"tb_year\"", entity.getTbYear()); |
| | | queryWrapper.eq("\"tb_quarter\"",entity.getTbQuarter()); |
| | | TbResGeneralInvestigationState state = tbResGeneralInvestigationStateService.getOne(queryWrapper); |
| | | if (null == state) { |
| | | //无填报状态记录则新建 |
| | |
| | | state.setResGuid(entity.getResGuid()); |
| | | state.setTbQuarter(entity.getTbQuarter()); |
| | | state.setTbYear(entity.getTbYear()); |
| | | state.setCreateTime(entity.getCreateTime()); |
| | | state.setCreateUser(entity.getCreateUser()); |
| | | state.setCreateTime(new Date()); |
| | | state.setCreateUser(AuthUtil.getUserAccount()); |
| | | } else { |
| | | //查看填报状态,只有0填报中才可以一直填报 |
| | | if (state.getCheckState() == 1 || state.getCheckState() == 2) { |
| | | return R.fail(entity.getResName() + "本年度已经普查完成,不能在提交了。"); |
| | | if (state.getCheckState() > 1) { |
| | | return R.fail(entity.getResName() + "本年度已经普查完成,不能再提交了。"); |
| | | } |
| | | } |
| | | |
| | |
| | | //填报年份 |
| | | private Integer tbYear; |
| | | |
| | | private String tbQuarter;//季度 |
| | | |
| | | private String isCounty; |
| | | |
| | | private String tbMonth; |
| | |
| | | |
| | | private int smallTwoNumAll; |
| | | |
| | | private double dykeLength; |
| | | private double dykeLength;//危害长度 |
| | | private double levelOneLength;//一级危害长度 |
| | | private double levelTwoLength;//二级危害长度 |
| | | private double levelThreeLength;//三级危害长度 |
| | | private double levelFourLength;//四级危害长度 |
| | | private double levelFiveLength;//五级危害长度 |
| | | |
| | | private double levelOneLength; |
| | | private double levelTwoLength; |
| | | private double levelThreeLength; |
| | | private double levelFourLength; |
| | | private double levelFiveLength; |
| | | private double dykeLengthAll;//提防总长度 |
| | | private double levelOneLengthAll;//一级提防长度 |
| | | private double levelTwoLengthAll;//二级提防长度 |
| | | private double levelThreeLengthAll;//三级提防长度 |
| | | private double levelFourLengthAll;//四级提防长度 |
| | | private double levelFiveLengthAll;//五级提防长度 |
| | | |
| | | } |
| | |
| | | public class TbDykeUnitDangerVO { |
| | | |
| | | private String dykeGuid;//提防id |
| | | private Integer tbYear;//提防id |
| | | private String tbQuarter;//提防id |
| | | private String unit;//提防单元 |
| | | private String dangerNum;//危害处数 |
| | | private String hdjxs;//活动迹象 |
| | |
| | | private String startTime; |
| | | private String endTime; |
| | | |
| | | private String actualFund; |
| | | |
| | | } |
| | |
| | | private String tbState;//填报状态 |
| | | |
| | | private Integer tbYear;//填报年度 |
| | | private String tbQuarter;//填报年度 |
| | | |
| | | //危害长度 |
| | | private double totalDangerLength; |
| | |
| | | count = attResRsbNorspiService.count(); |
| | | } else if (tableName.equals("att_res_flse_lim")) { |
| | | count = attResFlseLimService.count(); |
| | | } |
| | | } else if (tableName.equals("att_wmst_base")) |
| | | count = resBaseService.getAttWmstBaseCount(); |
| | | else if (tableName.equals("att_imagest_base")) |
| | | count = resBaseService.getAttImagestBaseCount(); |
| | | else if (tableName.equals("att_cd_base")) |
| | | count = resBaseService.getAttCdBaseCount(); |
| | | else if (tableName.equals("att_wy_cd_base")) |
| | | count = resBaseService.getAttWyCdBaseCount(); |
| | | |
| | | |
| | | log.info("预警数量count:" + count); |
| | | |
| | |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | return R.data(number); |
| | | } |
| | | |
| | | |
| | | @GetMapping("/getDwByParentId") |
| | | @ApiOperationSupport(order = 10) |
| | | @ApiOperation(value = "获取单位树形结构", notes = "获取单位树形结构") |
| | | public R<Map<String,List<DeptVO>>> getDwByParentId(String precinct) { |
| | | Map<String,List<DeptVO>> map=new HashMap<>(); |
| | | if(precinct==null||precinct.equals("")){ |
| | | map.put("one",new ArrayList<>()); |
| | | map.put("two",new ArrayList<>()); |
| | | map.put("three",new ArrayList<>()); |
| | | }else { |
| | | List<DeptVO> tree1 = deptService.treeByParentIdNew("1821370772215062530", precinct); |
| | | List<DeptVO> tree2 = deptService.treeByParentIdNew("1821370871330660353", precinct); |
| | | List<DeptVO> tree3 = deptService.treeByParentIdNew("1806175841028685826", precinct); |
| | | map.put("one", tree1); |
| | | map.put("two", tree2); |
| | | map.put("three", tree3); |
| | | } |
| | | return R.data(map); |
| | | } |
| | | } |
| | |
| | | Map<String, DeptUserTreeNode> getUserMap(@Param("treeNode") DeptUserTreeNode treeNode); |
| | | |
| | | String getResDept(@Param("deptIds") String deptIds); |
| | | |
| | | List<DeptVO> treeByParentIdNew(@Param("parentIds") List<String> parentIds,@Param("precinct")String precinct); |
| | | } |
| | |
| | | </if> |
| | | ORDER BY sort |
| | | </select> |
| | | <select id="treeByParentIdNew" resultMap="treeNodeResultMap"> |
| | | select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0 and precinct=#{precinct} |
| | | <if test="parentIds!=null and parentIds!=''"> |
| | | and |
| | | |
| | | <foreach item="id" collection="parentIds" open="(" separator="or" close=")"> |
| | | id = #{id} or parent_id = #{id} or parent_id in ( |
| | | select b.id from blade_dept b where b.is_deleted = 0 and b.PARENT_ID = #{id} |
| | | ) |
| | | |
| | | </foreach> |
| | | |
| | | </if> |
| | | |
| | | ORDER BY sort |
| | | </select> |
| | | <select id="lazyTree" resultMap="treeNodeResultMap" > |
| | | SELECT |
| | | dept.id, |
| | |
| | | * @return |
| | | */ |
| | | String getResDept(String deptIds); |
| | | |
| | | List<DeptVO> treeByParentIdNew(String number,String precinct); |
| | | } |
| | |
| | | public String getResDept(String deptIds) { |
| | | return baseMapper.getResDept(deptIds); |
| | | } |
| | | |
| | | @Override |
| | | public List<DeptVO> treeByParentIdNew(String parentId,String precinct) { |
| | | // if (AuthUtil.isAdministrator() || AuthUtil.isAdmin()) { |
| | | // return ForestNodeMerger.merge(baseMapper.tree(StringPool.EMPTY)); |
| | | // } |
| | | String [] parentIds = parentId.split(","); |
| | | List<String> parentIdList = new ArrayList<>(); |
| | | for (String str:parentIds) { |
| | | parentIdList.add(str); |
| | | } |
| | | return ForestNodeMerger.merge(baseMapper.treeByParentIdNew(parentIdList,precinct)); |
| | | } |
| | | } |