Merge remote-tracking branch 'origin/jtdev' into jtdev
38 files modified
13 files added
| | |
| | | @ApiModelProperty("是否已删除") |
| | | private Integer isDeleted; |
| | | |
| | | /** |
| | | * 水库guid |
| | | */ |
| | | @ApiModelProperty("水库guid") |
| | | private String resGuid; |
| | | |
| | | /** |
| | | * 告警规则id |
| | | */ |
| | | private Long alarmRuleId; |
| | | |
| | | } |
| | |
| | | * 是否导出,不为空是导出,不分页 |
| | | */ |
| | | private Integer isExport; |
| | | |
| | | /** |
| | | * 开始时间 |
| | | */ |
| | | private String startTime; |
| | | |
| | | /** |
| | | * 结束时间 |
| | | */ |
| | | private String endTime; |
| | | |
| | | /** |
| | | * 消息记录类型 1:短信 2:站内信 |
| | | */ |
| | | private String type; |
| | | |
| | | |
| | | /** |
| | | * 消息类型 |
| | | */ |
| | | private String smsType; |
| | | |
| | | /** |
| | | * 水库名称 |
| | | */ |
| | | private String resName; |
| | | |
| | | /** |
| | | * 规则名称 |
| | | */ |
| | | private String ruleName; |
| | | |
| | | /** |
| | | * 用户名 |
| | | */ |
| | | private String userName; |
| | | |
| | | } |
| | |
| | | private String executeTime; |
| | | |
| | | /** |
| | | * 任务最后修改时间 |
| | | */ |
| | | private String gmtModified; |
| | | |
| | | /** |
| | | * 被叫号码量 |
| | | */ |
| | | private String calleeNumberCount; |
| | |
| | | */ |
| | | private String source; |
| | | |
| | | /** |
| | | * 水库guid |
| | | */ |
| | | private String resGuid; |
| | | |
| | | /** |
| | | * 反馈 |
| | | */ |
| | | private String feedback; |
| | | |
| | | //是否异常 1是 2 否 |
| | | private String alertStatus; |
| | | /** |
| | | * 告警规则id |
| | | */ |
| | | private Long alarmRuleId; |
| | | |
| | | /** |
| | | * 告警模板id |
| | | */ |
| | | private String templateId; |
| | | |
| | | } |
| | |
| | | private String videoUrls; |
| | | |
| | | /** |
| | | * 文件附件 |
| | | */ |
| | | private String fileUrls; |
| | | |
| | | /** |
| | | * 图片附件 |
| | | */ |
| | | private String imageName; |
| | | |
| | | /** |
| | | * 视频附件 |
| | | */ |
| | | private String videoName; |
| | | |
| | | /** |
| | | * 文件附件 |
| | | */ |
| | | private String fileName; |
| | | /** |
| | | * 审核意见 |
| | | */ |
| | | private String auditOpinion; |
| | |
| | | *是否重新提交 0是 ,1否 |
| | | */ |
| | | private Integer resubmit; |
| | | |
| | | /** |
| | | * 重新上报单据ID |
| | | */ |
| | | @TableField(exist = false) |
| | | private String resubmitId; |
| | | } |
| | |
| | | package cn.gistack.sm.sg.DO; |
| | | |
| | | import cn.gistack.sm.sg.VO.PreAcceVO; |
| | | import cn.gistack.sm.sg.VO.PtypeVO; |
| | | import cn.gistack.sm.sg.VO.SgTypeVO; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | |
| | | |
| | | |
| | | @TableField(exist = false) |
| | | private List<SgTypeVO> sgGxDOS; |
| | | private List<PtypeVO> ptypeVOS; |
| | | @TableField(exist = false) |
| | | private List<PreAcceVO> preAcce; |
| | | |
| | |
| | | * 项目排序 0状态 , 1进度 ,2注册码 |
| | | */ |
| | | private Integer projectSort; |
| | | private String auditPerson; |
| | | |
| | | private List<String> sgCodeS; |
| | | |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sg.VO; |
| | | |
| | | import cn.gistack.sm.sg.DO.SgDeviceDO; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 工序父类型 进度实体类 |
| | | */ |
| | | @Data |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | @Builder |
| | | public class PtypeVO { |
| | | private String pTypeName; |
| | | private String pTypeProgress; |
| | | private List<SgTypeVO> sgTypeVOS; |
| | | } |
| | |
| | | private Integer deviceStatus; |
| | | private Integer projectStatus; |
| | | private String progressName; |
| | | private String Ptype; |
| | | private String PtypeName; |
| | | private Integer resubmit; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sg.VO; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class SgStatisDeviceVO { |
| | | private Integer deviceCount; |
| | | private Integer deviceStart; |
| | | private String pType; |
| | | } |
| | |
| | | private int commenceNum; |
| | | |
| | | private String projectProgress; |
| | | /** |
| | | * 表面变形 |
| | | */ |
| | | private int surfaceNum; |
| | | private String surfaceProgress; |
| | | |
| | | /** |
| | | * 视频 |
| | | */ |
| | | private int videoNum; |
| | | private String videoProgress; |
| | | |
| | | /** |
| | | * 渗流压力 |
| | | */ |
| | | private int transNum; |
| | | private String transProgress; |
| | | |
| | | /** |
| | | * 渗流量 |
| | | */ |
| | | private int seepageNum; |
| | | private String seepageProgress; |
| | | |
| | | private String proIds; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | private String stepNum; |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date reportTime; |
| | | private Integer resubmit; |
| | | } |
| | |
| | | public class SgTypeVO { |
| | | private String typeName; |
| | | private String typeProgress; |
| | | private String progress; |
| | | private List<SgDeviceDO> deviceDOS; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sjztods.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @TableName("\"water_data_termites\"") |
| | | @ApiModel(value = "白蚁监测数据表", description = "白蚁监测数据表") |
| | | public class WaterDataTermites { |
| | | |
| | | /** |
| | | * 白蚁蚁情状态 |
| | | */ |
| | | @ApiModelProperty(value = "白蚁蚁情状态 白蚁蚁情状态,有白蚁入侵为1") |
| | | @TableField("\"status\"") |
| | | private Integer status; |
| | | |
| | | /** |
| | | * 设备id |
| | | */ |
| | | @ApiModelProperty(value = "设备id") |
| | | @TableField("\"device_id\"") |
| | | private Integer deviceId; |
| | | |
| | | /** |
| | | * 设备id |
| | | */ |
| | | @ApiModelProperty(value = "设备id") |
| | | @TableField("\"order\"") |
| | | private String order; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sjztods.vo; |
| | | |
| | | import cn.gistack.sm.sjztods.entity.WaterDataTermites; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class WaterDataTermitesVO extends WaterDataTermites { |
| | | |
| | | private String startTime; |
| | | private String endTime; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "区划名称") |
| | | private String adCode; |
| | | |
| | | /** |
| | | * 工程区划 |
| | | */ |
| | | @ApiModelProperty(value = "工程区划") |
| | | private String sgCode; |
| | | |
| | | private String adGrad; |
| | | |
| | | private String resGuid; |
| | |
| | | messageRecord.setSender(AuthUtil.getUserId().toString()); |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setAlarmRuleId(alarmRule.getId()); |
| | | messageRecord.setTemplateId(smsTemplate.getTemplateId()); |
| | | // 设置告警记录信息 |
| | | AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail(); |
| | | alarmRecordDetail.setReservoirNumber(list.get(0)); |
| | |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setRecipient(phone); |
| | | messageRecord.setTemplateId(smsTemplate.getTemplateId()); |
| | | messageRecord.setAlarmRuleId(alarmRule.getId()); |
| | | |
| | | |
| | | StringBuilder builder = new StringBuilder(); |
| | |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setRecipient(phone); |
| | | messageRecord.setTemplateId(smsTemplate.getTemplateId()); |
| | | messageRecord.setAlarmRuleId(alarmRule.getId()); |
| | | |
| | | List<String> resCdList = new ArrayList<>(); |
| | | Map<String, List<Temp>> resCollect = temps.stream().collect(Collectors.groupingBy(Temp::getReservoirCode)); |
| | |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setRecipient(phone); |
| | | messageRecord.setTemplateId(smsTemplate.getTemplateId()); |
| | | messageRecord.setAlarmRuleId(alarmRule.getId()); |
| | | List<String> contentList = new ArrayList<>(); |
| | | //因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行 |
| | | temps.forEach(info -> { |
| | |
| | | // 遍历 |
| | | for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) { |
| | | if (alarmRuleDetail.getAlarmMode().equals("短信")) { |
| | | asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, true); |
| | | asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, false); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = smsService.saveSendResult(null,resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1); |
| | | if (null != smsResult){ |
| | | smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId()); |
| | | smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId(),smsResult.getAlarmRuleId(),null); |
| | | } |
| | | // 返回发送信息 |
| | | return R.data(resultComResult); |
| | |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = smsService.saveSendResult(null,resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1); |
| | | if (null != smsResult){ |
| | | smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId()); |
| | | smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId(),smsResult.getAlarmRuleId(),null); |
| | | } |
| | | // 保存验证码到 redis |
| | | saveCodeForRedis(request.getUserNumber(), randNumber); |
| | |
| | | return R.data(SmsRecord); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 自定义分页列表查询 |
| | | * @param query 分页查询对象 |
| | | * @param smsRecord |
| | | * @return |
| | | */ |
| | | @ApiOperation(value="短信发送记录-自定义分页列表查询", notes="短信发送记录-自定义分页列表查询") |
| | | @GetMapping(value = "/msgPage") |
| | | public R msgPage(SmsRecordVO smsRecord, Query query) { |
| | | return R.data(smsRecordService.msgPage(Condition.getPage(query), smsRecord)); |
| | | } |
| | | |
| | | } |
| | |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = smsService.saveSendResult(null,code,msg,request, number); |
| | | if (null != smsResult){ |
| | | smsService.saveSendRecord(request, code,msg,smsResult.getId()); |
| | | smsService.saveSendRecord(request, code,msg,smsResult.getId(),null,null); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.vo.SmsRecordVO; |
| | | import com.baomidou.mybatisplus.annotation.InterceptorIgnore; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | * @return |
| | | */ |
| | | int batchSaveSendRecord(@Param("list") List<SmsRecord> list); |
| | | |
| | | /** |
| | | * 短信消息记录查询 |
| | | * @param page |
| | | * @param smsRecord |
| | | * @param list |
| | | * @return |
| | | */ |
| | | @InterceptorIgnore(tenantLine = "1") |
| | | List<SmsRecordVO> smsPage(IPage<SmsRecordVO> page, |
| | | @Param("smsRecord") SmsRecordVO smsRecord, |
| | | @Param("list") List<String> list); |
| | | |
| | | /** |
| | | * 站内信消息记录查询 |
| | | * @param page |
| | | * @param smsRecord |
| | | * @param list |
| | | * @return |
| | | */ |
| | | @InterceptorIgnore(tenantLine = "1") |
| | | List<SmsRecordVO> msgPage(IPage<SmsRecordVO> page, |
| | | @Param("smsRecord") SmsRecordVO smsRecord, |
| | | @Param("list") List<String> list); |
| | | |
| | | /** |
| | | * 短信和站内信消息记录查询 @InterceptorIgnore(tenantLine = "1") 等价 @SqlParser(filter = true)已过期 |
| | | * @param page |
| | | * @param smsRecord |
| | | * @param list |
| | | * @return |
| | | */ |
| | | @InterceptorIgnore(tenantLine = "1") |
| | | List<SmsRecordVO> smsAndMsgPage(IPage<SmsRecordVO> page, |
| | | @Param("smsRecord") SmsRecordVO smsRecord, |
| | | @Param("list") List<String> list); |
| | | } |
| | |
| | | </foreach> |
| | | </insert> |
| | | |
| | | |
| | | <!--站内信消息记录列表查询--> |
| | | <select id="msgPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO"> |
| | | select |
| | | smr.id,smr.content,smr.create_time,'发送成功' as responseMsg,smr.template_id, |
| | | a."name" as resName, |
| | | bu.name as userName,bu.phone as tel, |
| | | 2 as type, |
| | | sar.rule_name as ruleName,sst.sms_type as smsType |
| | | from YWXT.sm_message_record smr |
| | | left join SJZT_MD."att_res_base" a on a."guid" = smr.res_guid |
| | | left join YWXT.blade_user bu on CAST(bu.id AS VARCHAR) = smr.recipient and bu.is_deleted = 0 |
| | | left join YWXT.sm_alarm_rule sar on sar.id = smr.alarm_rule_id |
| | | left join YWXT.sm_sms_template sst on sst.template_id = smr.template_id and sst.is_deleted = 0 |
| | | <where> |
| | | <if test="smsRecord.templateId!=null and smsRecord.templateId!=''"> |
| | | and smr.template_id = #{smsRecord.templateId} |
| | | </if> |
| | | <if test="smsRecord.smsType!=null and smsRecord.smsType!=''"> |
| | | and sst.sms_type = #{smsRecord.smsType} |
| | | </if> |
| | | <if test="smsRecord.tel!=null and smsRecord.tel!=''"> |
| | | and bu.phone = #{smsRecord.tel} |
| | | </if> |
| | | <if test="smsRecord.content!=null and smsRecord.content!=''"> |
| | | and smr.content like concat(concat('%',#{smsRecord.content}),'%') |
| | | </if> |
| | | <if test="smsRecord.userName!=null and smsRecord.userName!=''"> |
| | | and bu.name like concat(concat('%',#{smsRecord.userName}),'%') |
| | | </if> |
| | | <if test="smsRecord.resName!=null and smsRecord.resName!=''"> |
| | | and a."name" like concat(concat('%',#{smsRecord.resName}),'%') |
| | | </if> |
| | | <if test="smsRecord.startTime!=null and smsRecord.startTime!=''"> |
| | | and DATE_FORMAT(smr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime} |
| | | </if> |
| | | <if test="smsRecord.endTime!=null and smsRecord.endTime!=''"> |
| | | and DATE_FORMAT(smr.create_time,'%Y-%m-%d') <= #{smsRecord.endTime} |
| | | </if> |
| | | <if test="list!=null and list.size()>0"> |
| | | and smr.template_id in |
| | | <foreach collection="list" item="id" separator ="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | order by smr.id desc |
| | | </select> |
| | | |
| | | <!--短信消息记录列表查询--> |
| | | <select id="smsPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO"> |
| | | select |
| | | ssr.id,ssr.tel,ssr.content,ssr.create_time,ssr.response_msg,ssr.template_id, |
| | | a."name" as resName, |
| | | bu.name as userName, |
| | | 1 as type, |
| | | sar.rule_name as ruleName,sst.sms_type as smsType |
| | | from YWXT.sm_sms_record ssr |
| | | left join SJZT_MD."att_res_base" a on a."guid" = ssr.res_guid |
| | | left join YWXT.blade_user bu on bu.account = ssr.tel and bu.is_deleted = 0 |
| | | left join YWXT.sm_alarm_rule sar on sar.id = ssr.alarm_rule_id |
| | | left join YWXT.sm_sms_template sst on sst.template_id = ssr.template_id and sst.is_deleted = 0 |
| | | <where> |
| | | <if test="smsRecord.templateId!=null and smsRecord.templateId!=''"> |
| | | and ssr.template_id = #{smsRecord.templateId} |
| | | </if> |
| | | <if test="smsRecord.smsType!=null and smsRecord.smsType!=''"> |
| | | and sst.sms_type = #{smsRecord.smsType} |
| | | </if> |
| | | <if test="smsRecord.tel!=null and smsRecord.tel!=''"> |
| | | and ssr.tel = #{smsRecord.tel} |
| | | </if> |
| | | <if test="smsRecord.content!=null and smsRecord.content!=''"> |
| | | and ssr.content like concat(concat('%',#{smsRecord.content}),'%') |
| | | </if> |
| | | <if test="smsRecord.userName!=null and smsRecord.userName!=''"> |
| | | and bu.name like concat(concat('%',#{smsRecord.userName}),'%') |
| | | </if> |
| | | <if test="smsRecord.resName!=null and smsRecord.resName!=''"> |
| | | and a."name" like concat(concat('%',#{smsRecord.resName}),'%') |
| | | </if> |
| | | <if test="smsRecord.startTime!=null and smsRecord.startTime!=''"> |
| | | and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime} |
| | | </if> |
| | | <if test="smsRecord.endTime!=null and smsRecord.endTime!=''"> |
| | | and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') <= #{smsRecord.endTime} |
| | | </if> |
| | | <if test="list!=null and list.size()>0"> |
| | | and ssr.template_id in |
| | | <foreach collection="list" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | order by ssr.id desc |
| | | </select> |
| | | |
| | | |
| | | <!--短信和站内信消息记录列表查询--> |
| | | <select id="smsAndMsgPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO"> |
| | | (select |
| | | ssr.id,ssr.tel,ssr.content,ssr.create_time,ssr.response_msg,ssr.template_id, |
| | | a."name" as resName, |
| | | bu.name as userName, |
| | | 1 as type, |
| | | sar.rule_name as ruleName,sst.sms_type as smsType |
| | | from YWXT.sm_sms_record ssr |
| | | left join SJZT_MD."att_res_base" a on a."guid" = ssr.res_guid |
| | | left join YWXT.blade_user bu on bu.account = ssr.tel and bu.is_deleted = 0 |
| | | left join YWXT.sm_alarm_rule sar on sar.id = ssr.alarm_rule_id |
| | | left join YWXT.sm_sms_template sst on sst.template_id = ssr.template_id and sst.is_deleted = 0 |
| | | <where> |
| | | <if test="smsRecord.templateId!=null and smsRecord.templateId!=''"> |
| | | and ssr.template_id = #{smsRecord.templateId} |
| | | </if> |
| | | <if test="smsRecord.smsType!=null and smsRecord.smsType!=''"> |
| | | and sst.sms_type = #{smsRecord.smsType} |
| | | </if> |
| | | <if test="smsRecord.tel!=null and smsRecord.tel!=''"> |
| | | and ssr.tel = #{smsRecord.tel} |
| | | </if> |
| | | <if test="smsRecord.content!=null and smsRecord.content!=''"> |
| | | and ssr.content like concat(concat('%',#{smsRecord.content}),'%') |
| | | </if> |
| | | <if test="smsRecord.userName!=null and smsRecord.userName!=''"> |
| | | and bu.name like concat(concat('%',#{smsRecord.userName}),'%') |
| | | </if> |
| | | <if test="smsRecord.resName!=null and smsRecord.resName!=''"> |
| | | and a."name" like concat(concat('%',#{smsRecord.resName}),'%') |
| | | </if> |
| | | <if test="smsRecord.startTime!=null and smsRecord.startTime!=''"> |
| | | and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime} |
| | | </if> |
| | | <if test="smsRecord.endTime!=null and smsRecord.endTime!=''"> |
| | | and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') <= #{smsRecord.endTime} |
| | | </if> |
| | | <if test="list!=null and list.size()>0"> |
| | | and ssr.template_id in |
| | | <foreach collection="list" item="id" separator="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | ) |
| | | union all |
| | | ( |
| | | select |
| | | smr.id,smr.content,smr.create_time,'发送成功' as responseMsg,smr.template_id, |
| | | a."name" as resName, |
| | | bu.name as userName,bu.phone as tel, |
| | | 2 as type, |
| | | sar.rule_name as ruleName,sst.sms_type as smsType |
| | | from YWXT.sm_message_record smr |
| | | left join SJZT_MD."att_res_base" a on a."guid" = smr.res_guid |
| | | left join YWXT.blade_user bu on CAST(bu.id AS VARCHAR) = smr.recipient and bu.is_deleted = 0 |
| | | left join YWXT.sm_alarm_rule sar on sar.id = smr.alarm_rule_id |
| | | left join YWXT.sm_sms_template sst on sst.template_id = smr.template_id and sst.is_deleted = 0 |
| | | <where> |
| | | <if test="smsRecord.templateId!=null and smsRecord.templateId!=''"> |
| | | and smr.template_id = #{smsRecord.templateId} |
| | | </if> |
| | | <if test="smsRecord.smsType!=null and smsRecord.smsType!=''"> |
| | | and sst.sms_type = #{smsRecord.smsType} |
| | | </if> |
| | | <if test="smsRecord.tel!=null and smsRecord.tel!=''"> |
| | | and bu.phone = #{smsRecord.tel} |
| | | </if> |
| | | <if test="smsRecord.content!=null and smsRecord.content!=''"> |
| | | and smr.content like concat(concat('%',#{smsRecord.content}),'%') |
| | | </if> |
| | | <if test="smsRecord.userName!=null and smsRecord.userName!=''"> |
| | | and bu.name like concat(concat('%',#{smsRecord.userName}),'%') |
| | | </if> |
| | | <if test="smsRecord.resName!=null and smsRecord.resName!=''"> |
| | | and a."name" like concat(concat('%',#{smsRecord.resName}),'%') |
| | | </if> |
| | | <if test="smsRecord.startTime!=null and smsRecord.startTime!=''"> |
| | | and DATE_FORMAT(smr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime} |
| | | </if> |
| | | <if test="smsRecord.endTime!=null and smsRecord.endTime!=''"> |
| | | and DATE_FORMAT(smr.create_time,'%Y-%m-%d') <= #{smsRecord.endTime} |
| | | </if> |
| | | <if test="list!=null and list.size()>0"> |
| | | and smr.template_id in |
| | | <foreach collection="list" item="id" separator ="," open="(" close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | ) |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | * @param list |
| | | */ |
| | | int batchSaveSendRecord(List<SmsRecord> list); |
| | | |
| | | /** |
| | | * 自定义分页列表查询 |
| | | * @param page 分页查询对象 |
| | | * @param smsRecord |
| | | * @return |
| | | */ |
| | | Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord); |
| | | } |
| | |
| | | * @param code |
| | | * @param sendMsg |
| | | * @param resultId |
| | | * @param alarmRuleId |
| | | * @param resGuid |
| | | * @return |
| | | */ |
| | | SmsRecord saveSendRecord(SMSSendRequest request,String code, String sendMsg, Long resultId); |
| | | SmsRecord saveSendRecord(SMSSendRequest request,String code, String sendMsg, Long resultId,Long alarmRuleId,String resGuid); |
| | | |
| | | /** |
| | | * 发送降雨短信 |
| | |
| | | package cn.gistack.alerts.sms.service.impl; |
| | | |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.mapper.SmsRecordMapper; |
| | | import cn.gistack.alerts.sms.service.ISmsRecordService; |
| | | import cn.gistack.alerts.sms.vo.SmsRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Service |
| | | public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService { |
| | | |
| | | @Autowired |
| | | private AlarmRuleService alarmRuleService; |
| | | |
| | | /** |
| | | * 自定义分页列表查询 |
| | |
| | | public int batchSaveSendRecord(List<SmsRecord> list) { |
| | | return baseMapper.batchSaveSendRecord(list); |
| | | } |
| | | |
| | | /** |
| | | * 自定义分页列表查询 |
| | | * @param page 分页查询对象 |
| | | * @param smsRecord |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord) { |
| | | List<String> list = new ArrayList<>(); |
| | | // 判断是否为一级目录 |
| | | if (null!=smsRecord.getSmsType() && smsRecord.getSmsType().length()>1){ |
| | | // 查询对应的短信模板ID 集合 |
| | | list = alarmRuleService.getAlarmRuleDetailList(smsRecord.getSmsType()); |
| | | // 设置类型为null |
| | | smsRecord.setSmsType(""); |
| | | } |
| | | if (!Strings.isBlank(smsRecord.getType()) && smsRecord.getType().equals("1")){ |
| | | // 查询短信 |
| | | return page.setRecords(baseMapper.smsPage(page,smsRecord,list)); |
| | | } |
| | | if (!Strings.isBlank(smsRecord.getType()) && smsRecord.getType().equals("2")){ |
| | | // 查询站内信 |
| | | return page.setRecords(baseMapper.msgPage(page,smsRecord,list)); |
| | | } |
| | | // 查询全部返回 |
| | | return page.setRecords(baseMapper.smsAndMsgPage(page,smsRecord,list)); |
| | | } |
| | | } |
| | |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.result.ComResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | |
| | | import cn.gistack.alerts.sms.vo.SmsResponseVO; |
| | | import cn.gistack.alerts.sms.vo.Temp; |
| | | import cn.gistack.sm.intelligentCall.entity.CallNotFillRecord; |
| | | import cn.gistack.sm.intelligentCall.excel.CallExcel; |
| | | import cn.gistack.sm.intelligentCall.feign.OutCallClient; |
| | | import cn.gistack.sm.message.entity.MessageRecord; |
| | | import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.google.common.collect.Lists; |
| | | import com.google.common.collect.Sets; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.lang.reflect.Array; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | ComResult<SMSSendDataResult> result = SmsUtils.sendMsg(request); |
| | | if(null != smsResult) { |
| | | // 保存记录 |
| | | saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId()); |
| | | saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId(),null,null); |
| | | } |
| | | list.add(result); |
| | | } |
| | |
| | | messageRecord.setSender(AuthUtil.getUserId().toString()); |
| | | messageRecord.setSource("智能告警"); |
| | | messageRecord.setStatus(0); |
| | | messageRecord.setTemplateId(smsTemplate.getTemplateId()); |
| | | messageRecord.setAlarmRuleId(alarmRule.getId()); |
| | | // 设置告警记录信息 |
| | | AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail(); |
| | | alarmRecordDetail.setReservoirNumber(list.get(0)); |
| | |
| | | messageRecord.setContent(format); |
| | | messageRecordList.add(messageRecord); |
| | | // 保存短信发送记录 |
| | | smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),alarmRule.getId(),alarmRecordDetail.getReservoirNumber()); |
| | | if (null != smsRecord) { |
| | | alarmRecordDetail.setAlarmContent(format); |
| | | alarmRecordDetail.setSendRecordId(smsRecord.getId()); |
| | |
| | | * @param request |
| | | * @param code 响应code |
| | | * @param sendMsg 响应消息 |
| | | * @param resultId |
| | | * @param resultId 短信发送结果id |
| | | * @param alarmRuleId 告警规则id |
| | | * @param resGuid 水库guid |
| | | */ |
| | | @Override |
| | | public SmsRecord saveSendRecord(SMSSendRequest request, String code, String sendMsg, Long resultId) { |
| | | public SmsRecord saveSendRecord(SMSSendRequest request, |
| | | String code, |
| | | String sendMsg, |
| | | Long resultId, |
| | | Long alarmRuleId, |
| | | String resGuid |
| | | ) { |
| | | // 在保存明细 |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | smsRecord.setTel(request.getUserNumber()); |
| | |
| | | smsRecord.setResultId(resultId); |
| | | smsRecord.setResponseStatus(code); |
| | | smsRecord.setResponseMsg(sendMsg); |
| | | smsRecord.setResGuid(resGuid); |
| | | smsRecord.setAlarmRuleId(alarmRuleId); |
| | | //插入记录 |
| | | smsRecordService.save(smsRecord); |
| | | // 返回 |
| | |
| | | List<List<Temp>> lists = Lists.partition(new ArrayList<>(temps), 30); |
| | | for (List<Temp> list : lists) { |
| | | List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>(); |
| | | List<String> resGuidList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (Temp temp : list) { |
| | | resGuidList.add(temp.getReservoirCode()); |
| | | builder.append(temp.getReservoirName()).append(","); |
| | | smsRecordBuilder.append(temp.getReservoirName()).append(","); |
| | | AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO(); |
| | |
| | | // 设置内容 |
| | | request.setMessageContent(format); |
| | | // 保存短信发送记录 |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | String resGuid = resGuidList.size()>0?Strings.join(resGuidList,','):""; |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid); |
| | | //保存告警记录详情信息 |
| | | if (null != smsRecord) { |
| | | List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>(); |
| | |
| | | List<List<Temp>> lists = Lists.partition(new ArrayList<>(infoList), 30); |
| | | for (List<Temp> list : lists) { |
| | | List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>(); |
| | | List<String> resGuidList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (Temp temp : list) { |
| | | resGuidList.add(temp.getReservoirCode()); |
| | | builder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(","); |
| | | smsRecordBuilder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(","); |
| | | AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO(); |
| | |
| | | String format = String.format(str, substring.split(",")); |
| | | // 设置内容 |
| | | request.setMessageContent(format); |
| | | String resGuid = resGuidList.size()>0? Strings.join(resGuidList,','):""; |
| | | // 保存短信发送记录 |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid); |
| | | //保存告警记录详情信息 |
| | | if (null != smsRecord) { |
| | | List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>(); |
| | |
| | | }); |
| | | |
| | | |
| | | // 如果一人对应水库数量超过30个,则分批发送 |
| | | // 如果一人对应水库数量超过15个,则分批发送 |
| | | List<List<Temp>> lists = Lists.partition(new ArrayList<>(infoList), 15); |
| | | for (List<Temp> list : lists) { |
| | | List<String> resGuidList = new ArrayList<>(); |
| | | List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (Temp temp : list) { |
| | | resGuidList.add(temp.getReservoirCode()); |
| | | builder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(","); |
| | | smsRecordBuilder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(","); |
| | | AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO(); |
| | |
| | | String format = String.format(str, substring.split(",")); |
| | | // 设置内容 |
| | | request.setMessageContent(format); |
| | | // 转resGuid |
| | | String resGuid = resGuidList.size()>0? Strings.join(resGuidList,','):""; |
| | | // 保存短信发送记录 |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid); |
| | | //保存告警记录详情信息 |
| | | if (null != smsRecord) { |
| | | List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>(); |
| | |
| | | // 设置内容 |
| | | request.setMessageContent(formatContent); |
| | | // 保存短信发送记录 |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),null); |
| | | AlarmRecordDetail alarmRecordDetail1 = new AlarmRecordDetail(); |
| | | // 短信内容拼接(完成发送的结果信息) |
| | | alarmRecordDetail1.setAlarmContent(formatContent); |
| | |
| | | date_format(ct."gmt_create",'%Y-%m-%d %H:%i:%s') as createTime, |
| | | ct."task_status" as taskStatus, |
| | | date_format(ct."task_schedule_time",'%Y-%m-%d %H:%i:%s') as executeTime, |
| | | date_format(ct."gmt_modified",'%Y-%m-%d %H:%i:%s') as gmtModified, |
| | | ctr."calling_number" as callingNumber, |
| | | ctra."callee_number_count" as calleeNumberCount, |
| | | if(ifnull(scnfr.task_id,0)='0',ctra."connection_count",(ctra."connection_count"+scnfr.num)) as connectionCount, |
| | |
| | | import cn.gistack.sm.jcsb.entity.DbReport; |
| | | import cn.gistack.sm.jcsb.entity.DbReport; |
| | | import cn.gistack.sm.jcsb.entity.DeviceReport; |
| | | import cn.gistack.sm.jcsb.entity.ExtremumDO; |
| | | import cn.gistack.sm.jcsb.service.IDbReportService; |
| | | import cn.gistack.sm.jcsb.service.IExtremumService; |
| | | import cn.gistack.sm.jcsb.vo.DangerReportVO; |
| | | import cn.gistack.sm.jcsb.vo.DbReportVO; |
| | | import cn.gistack.sm.sg.DO.SgDeviceDO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | public class DbReportController extends BladeController { |
| | | |
| | | private final IDbReportService dbReportService; |
| | | |
| | | private final IExtremumService extremumService; |
| | | @GetMapping("/page") |
| | | @ApiOperation(value = "列表", notes = "传入实体类参数") |
| | | public R<IPage<DbReportVO>> pageList(DbReportVO dbReport, Query query) { |
| | |
| | | public R getLatestList(DbReportVO dbReport){ |
| | | return R.data(dbReportService.getLatestList(dbReport)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 新增或修改 类型极值 |
| | | */ |
| | | @PostMapping("/addExtremum") |
| | | @ApiOperation(value = "新增或修改类型极值", notes = "传入实体类参数") |
| | | public R submit(@RequestBody ExtremumDO extremumDO) { |
| | | |
| | | if(extremumDO!=null&&extremumDO.getId()!=null){ |
| | | return R.data(extremumService.updateById(extremumDO)); |
| | | }else { |
| | | |
| | | String type = extremumDO.getType(); |
| | | String skId = extremumDO.getSkId(); |
| | | ExtremumDO extremum = extremumService.getExtremum(type, skId); |
| | | if(extremum!=null){ |
| | | extremumDO.setId(extremum.getId()); |
| | | return R.data(extremumService.updateById(extremumDO)); |
| | | } |
| | | |
| | | return R.data(extremumService.saveOrUpdate(extremumDO)); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | @GetMapping(value = "/getExtremum") |
| | | public R getExtremumList(@RequestParam(name="skId",required=true) String skId,String type) { |
| | | List<ExtremumDO> page = extremumService.getExtremumList(skId,type); |
| | | return R.data(page); |
| | | } |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.jcsb.entity; |
| | | |
| | | import cn.gistack.sm.sg.DO.SgGxStepDO; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * 类型极值 |
| | | * </p> |
| | | * |
| | | * @author shenyijian |
| | | * @since 2024-06-13 11:51:20 |
| | | */ |
| | | @Data |
| | | @TableName("SM_EXTREMUMVALUE") |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | @Builder |
| | | public class ExtremumDO implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | |
| | | private Long id; |
| | | |
| | | /** |
| | | * 类型 |
| | | */ |
| | | private String type; |
| | | |
| | | /** |
| | | * y左极值 |
| | | */ |
| | | private String lMax; |
| | | private String lMin; |
| | | /** |
| | | * y右极值 |
| | | */ |
| | | private String rMax; |
| | | private String rMin; |
| | | |
| | | |
| | | /** |
| | | * |
| | | * 水库id |
| | | */ |
| | | private String skId; |
| | | |
| | | /** |
| | | * 人员id |
| | | */ |
| | | private String userId; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date time; |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.jcsb.mapper; |
| | | |
| | | import cn.gistack.sm.jcsb.entity.ExtremumDO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | public interface ExtremumMapper extends BaseMapper<ExtremumDO> { |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.jcsb.service; |
| | | |
| | | import cn.gistack.sm.jcsb.entity.ExtremumDO; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | public interface IExtremumService extends IService<ExtremumDO> { |
| | | |
| | | List<ExtremumDO> getExtremumList(String skId, String type); |
| | | |
| | | |
| | | ExtremumDO getExtremum(String type, String skId); |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.jcsb.service.impl; |
| | | |
| | | import cn.gistack.sm.jcsb.entity.DbReport; |
| | | import cn.gistack.sm.jcsb.entity.ExtremumDO; |
| | | import cn.gistack.sm.jcsb.mapper.DbReportMapper; |
| | | import cn.gistack.sm.jcsb.mapper.ExtremumMapper; |
| | | import cn.gistack.sm.jcsb.service.IDbReportService; |
| | | import cn.gistack.sm.jcsb.service.IExtremumService; |
| | | import cn.gistack.sm.jcsb.vo.DbReportVO; |
| | | import cn.gistack.sm.sg.DO.SgDeviceDO; |
| | | import cn.gistack.sm.sg.mapper.SgDeviceMapper; |
| | | 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.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class ExtremumServiceImpl extends ServiceImpl<ExtremumMapper, ExtremumDO> implements IExtremumService { |
| | | |
| | | @Override |
| | | public List<ExtremumDO> getExtremumList(String skId, String type) { |
| | | QueryWrapper<ExtremumDO> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("SK_ID", skId); |
| | | queryWrapper.eq(!StringUtils.isEmpty(type),"TYPE", type); |
| | | return baseMapper.selectList(queryWrapper); |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public ExtremumDO getExtremum(String type, String skId) { |
| | | QueryWrapper<ExtremumDO> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("SK_ID", skId); |
| | | queryWrapper.eq(!StringUtils.isEmpty(type),"TYPE", type); |
| | | return baseMapper.selectOne(queryWrapper); |
| | | } |
| | | } |
| | |
| | | package cn.gistack.sm.sg.mapper; |
| | | |
| | | import cn.gistack.sm.sg.DO.SgProgressReportDO; |
| | | import cn.gistack.sm.sg.DO.SgReportUserDO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.SgProgressReportVO; |
| | | import cn.gistack.sm.sg.VO.SgStepReportVO; |
| | |
| | | List<SgProgressReportVO> queryPageListAll(@Param("page") IPage<SgProgressReportVO> page, @Param("dto") ProjectSearchDTO searchDTO); |
| | | |
| | | Long selectProframId(Long deviceId); |
| | | |
| | | List<SgReportUserDO> selectProcessUserByProjectId(@Param("programId") Long programId); |
| | | } |
| | |
| | | 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.userId} and (report."STATUS" = 0 or report."STATUS" = 1) |
| | | and userR.approval_status = 0 and report.audit_person = #{dto.auditPerson} and (report."STATUS" = 0 or report."STATUS" = 1) |
| | | </if> |
| | | <if test="dto.approvalStatus != null and dto.approvalStatus ==1"> |
| | | and userR.approval_status = 1 |
| | | </if> |
| | | <if test="dto.approvalStatus != null and dto.approvalStatus ==2"> |
| | | AND userR.approval_order = 2 |
| | | AND userR.approval_status = 2 |
| | | </if> |
| | | <if test="dto.startTime != null and dto.startTime !='' "> |
| | | and report.report_time >= #{dto.startTime} |
| | |
| | | step.gx_step_name AS stepName, |
| | | step.gx_step_num AS stepNum, |
| | | re.STATUS AS approvalStatus, |
| | | re.report_time |
| | | re.report_time, |
| | | re.resubmit |
| | | FROM |
| | | ywxt.sg_gx_step step |
| | | LEFT JOIN ywxt.sg_gx gx ON step.gx_info_id = gx.id |
| | |
| | | <select id="selectProframId" resultType="java.lang.Long"> |
| | | select program_id from ywxt.sg_device where id = #{deviceId} |
| | | </select> |
| | | <select id="selectProcessUserByProjectId" resultType="cn.gistack.sm.sg.DO.SgReportUserDO"> |
| | | 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> |
| | | </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.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 com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | |
| | | SgProjectInfoVO selectVOById(@Param("proframId") Long proframId); |
| | | |
| | | String getSgCodeByUser(String id); |
| | | |
| | | List<SgStatisDeviceVO> getDeviceTypes(@Param("s") String s); |
| | | |
| | | //List<String> getProjectIds(String code,@Param("grad") String grad ); |
| | | } |
| | |
| | | #{id} |
| | | </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.projectSort == null or dto.projectSort ==0"> |
| | | ORDER BY info.status desc ,info.project_progress desc |
| | | </if> |
| | |
| | | ORDER BY info.sk_id asc |
| | | </if> |
| | | </select> |
| | | |
| | | <sql id="sgCodeCondition"> |
| | | <if test="dto.sgCodeS != null and dto.sgCodeS.size() > 0"> |
| | | AND ( |
| | | <foreach collection="dto.sgCodeS" item="id" separator="OR" open="(" close=")"> |
| | | dria.province_cd = #{id} |
| | | OR dria.city_cd = #{id} |
| | | OR dria.county_cd = #{id} |
| | | or dria.town_cd = #{id} |
| | | </foreach> |
| | | ) |
| | | </if> |
| | | </sql> |
| | | |
| | | <select id="queryStepByProject" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | |
| | | SELECT |
| | |
| | | gx.id AS gxId, |
| | | gx.gx_name, |
| | | d.device_name, |
| | | Pdict.dict_key as Ptype, |
| | | Pdict.dict_value as PtypeName, |
| | | d.device_type, |
| | | dict."DICT_VALUE" AS typeName, |
| | | d.id AS dId, |
| | |
| | | d.STATUS AS deviceStatus, |
| | | pro.STATUS AS projectStatus, |
| | | re.id AS reportId, |
| | | pro.lon_lat |
| | | pro.lon_lat, |
| | | re.resubmit |
| | | FROM |
| | | ywxt.sg_project_info pro |
| | | 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" 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 |
| | | LEFT JOIN ywxt.sg_gx gx ON d.device_type = gx.gx_type |
| | | LEFT JOIN ywxt.sg_gx_step step ON gx.id = step.gx_info_id |
| | | LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id |
| | |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | ORDER BY pro.status desc ,pro.project_progress desc |
| | | |
| | | </select> |
| | | <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | SELECT |
| | |
| | | a."ad_code" CODE, |
| | | a."ad_name" NAME, |
| | | SUM( CASE WHEN b.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum, |
| | | count( b.STATUS ) projectSum |
| | | count( b.STATUS ) projectSum, |
| | | LISTAGG(b.id, ',') as proIds |
| | | FROM |
| | | ( |
| | | SELECT |
| | | dria."county_cd" AS countyCode, |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode, |
| | | info.STATUS |
| | | info.STATUS, |
| | | info.id |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | |
| | | SELECT |
| | | 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 |
| | | count( info.STATUS ) projectSum, |
| | | LISTAGG(info.id, ',') as proIds |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | |
| | | info.lot as code, |
| | | info.lot as name, |
| | | sum( CASE WHEN info.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END ) AS commenceNum, |
| | | count( info.STATUS ) AS projectSum |
| | | count( info.STATUS ) AS projectSum, |
| | | LISTAGG(info.id, ',') as proIds |
| | | FROM |
| | | YWXT.SG_PROJECT_INFO info |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id |
| | |
| | | pro.deviceStatus, |
| | | pro.projectStatus, |
| | | pro.reportId, |
| | | pro.lon_lat |
| | | pro.lon_lat, |
| | | pro.project_progress |
| | | from |
| | | (SELECT |
| | | pro.id, |
| | |
| | | pro.lon_lat, |
| | | dria."county_cd" AS countyCode, |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode |
| | | ad."ad_code" AS provinceCode, |
| | | pro.project_progress |
| | | FROM |
| | | ywxt.sg_project_info pro |
| | | LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id |
| | |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | ORDER BY pro.projectStatus desc ,pro.project_progress desc |
| | | </select> |
| | | <select id="selectVOById" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | select * from ywxt.sg_project_info pro where pro.id = #{proframId} |
| | | </select> |
| | | <!-- <select id="getProjectIds" resultType="java.lang.String">--> |
| | | |
| | | <!-- </select>--> |
| | | <select id="getDeviceTypes" resultType="cn.gistack.sm.sg.VO.SgStatisDeviceVO"> |
| | | SELECT |
| | | count( d.id) AS deviceCount, |
| | | sum( CASE WHEN d.STATUS IN ( 1, 2 ) THEN 1 ELSE 0 END) deviceStart, |
| | | Pdict.DICT_KEY as pType |
| | | FROM |
| | | ywxt.sg_device d |
| | | LEFT JOIN ywxt.blade_dict_biz dict ON d.device_type = dict.DICT_KEY |
| | | LEFT JOIN YWXT."BLADE_DICT_BIZ" Pdict ON dict.parent_id = Pdict.id |
| | | WHERE program_id IN ${s} |
| | | GROUP BY |
| | | Pdict.DICT_KEY |
| | | </select> |
| | | <select id="getSgCodeByUser" resultType="java.lang.String"> |
| | | 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} |
| | | |
| | | </select> |
| | | </mapper> |
| | |
| | | if (CollectionUtils.isNotEmpty(list)){ |
| | | throw new ServiceException("此工序存在工序步骤,不允许删除"); |
| | | } |
| | | this.delete(id); |
| | | sgGxMapper.deleteById(id); |
| | | } |
| | | } |
| | |
| | | @Override |
| | | @Transactional |
| | | public void add(SgProgressReportDO sgProgressReportDO) { |
| | | String resubmitId = sgProgressReportDO.getResubmitId(); |
| | | if (StringUtils.isNotBlank(resubmitId)){ |
| | | new LambdaUpdateChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getId,resubmitId).set(SgProgressReportDO::getResubmit,1).update(); |
| | | } |
| | | Long userId = AuthUtil.getUserId(); |
| | | sgProgressReportDO.setReportUser(userId); |
| | | Date now = DateUtil.now(); |
| | |
| | | |
| | | if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) { |
| | | for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) { |
| | | if (sgProgressReportDO1.getStatus()!= 2) { |
| | | if (sgProgressReportDO1.getStatus()!= 2 && sgProgressReportDO1.getStatus()!= 3) { |
| | | throw new ServiceException("请先完成施工准备的审批!"); |
| | | } |
| | | } |
| | |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId); |
| | | 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){ |
| | | 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); |
| | | } |
| | | List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper); |
| | | if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){ |
| | | |
| | | if (CollectionUtils.isNotEmpty(sgProgressReportDOS)){ |
| | | for (SgProgressReportDO reportDO : sgProgressReportDOS) { |
| | | if (reportDO.getStatus()==3 && reportDO.getResubmit()!=null && reportDO.getResubmit()==0){ |
| | | throw new ServiceException("此工序已存在审批!"); |
| | | } |
| | | } |
| | | } |
| | | List<SgProgressReportDO> reportDOS = sgProgressReportDOS.stream().filter(s -> s.getStatus() != 3).collect(Collectors.toList()); |
| | | if ( reportDOS!=null && reportDOS.size()>0){ |
| | | throw new ServiceException("此工序已存在审批!"); |
| | | } |
| | | for (SgGxStepDO gxStepDO : list) { |
| | |
| | | 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() + "的审批!"); |
| | |
| | | } |
| | | 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); |
| | | return sgProgressReportVO; |
| | | } |
| | |
| | | public Map<String, Long> countList(ProjectSearchDTO searchDTO) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | searchDTO.setUserId(userId); |
| | | searchDTO.setAuditPerson(userId.toString()); |
| | | List<SgProgressReportVO> all = sgProgressReportMapper.queryList(searchDTO); |
| | | searchDTO.setApprovalStatus(0); |
| | | List<SgProgressReportVO> pending = sgProgressReportMapper.queryList(searchDTO); |
| | |
| | | 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)); |
| | | } |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryList(page, searchDTO); |
| | | return page.setRecords(list); |
| | | } |
| | |
| | | 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.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; |
| | |
| | | |
| | | @Override |
| | | public IPage<SgProjectInfoDO> 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)); |
| | | 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())); |
| | | }); |
| | | }*/ |
| | | } |
| | | return page.setRecords(sgProjectInfoDOS); |
| | | } |
| | | |
| | | /** |
| | | * 获取当前用户的工程编码 |
| | | */ |
| | | public List<String> getSgCodeByUser(){ |
| | | Long userId = AuthUtil.getUserId(); |
| | | String sgCode = sgProjectInfoMapper.getSgCodeByUser(userId.toString()); |
| | | if (StringUtils.isNotBlank(sgCode)){ |
| | | List<String> list = List.of(sgCode.split(",")); |
| | | return list; |
| | | } |
| | | return null; |
| | | } |
| | | /** |
| | | * 获取项目及项目下设备及设备下工序进度 |
| | | * @param searchDTO |
| | |
| | | } |
| | | SgProjectInfoVO sgProjectInfoVO = value.get(0); |
| | | SgProjectInfoDO sgProjectInfoDO = SgProjectInfoDO.builder().id(porId).lonLat(sgProjectInfoVO.getLonLat()).status(sgProjectInfoVO.getProjectStatus()).projectName(sgProjectInfoVO.getProjectName()).build(); |
| | | //父类型分组 |
| | | List<PtypeVO> pTypes = new ArrayList(); |
| | | Map<String, List<SgProjectInfoVO>> pTypeMap = value.stream().filter(s->s.getPtype()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getPtype)); |
| | | for (Map.Entry<String, List<SgProjectInfoVO>> pty : pTypeMap.entrySet()) { |
| | | List<SgProjectInfoVO> ptyValue = pty.getValue(); |
| | | if (CollectionUtils.isEmpty(ptyValue)){ |
| | | continue; |
| | | } |
| | | PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).build(); |
| | | List<SgTypeVO> sgGxDOS = new ArrayList<>(); |
| | | //类型分组 |
| | | Map<String, List<SgProjectInfoVO>> GxMap = value.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType)); |
| | | Map<String, List<SgProjectInfoVO>> GxMap = ptyValue.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType)); |
| | | for (Map.Entry<String, List<SgProjectInfoVO>> ty : GxMap.entrySet()) { |
| | | String type = ty.getKey(); |
| | | List<SgProjectInfoVO> gxList = ty.getValue(); |
| | |
| | | SgDeviceDO sgDeviceDO = new SgDeviceDO(); |
| | | sgDeviceDO.setId(dId); |
| | | sgDeviceDO.setDeviceName(deList.get(0).getDeviceName()); |
| | | List<SgGxStepDO> stepDOS = deList.stream().filter(s->s.getReportStatus()==null || s.getReportStatus()!=4).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> 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()); |
| | | BigDecimal stepOverSize = BigDecimal.ZERO; |
| | |
| | | BigDecimal divideDevice = deviceOver.divide(deviceSize, 2, RoundingMode.HALF_UP); |
| | | typeVO.setDeviceDOS(deviceDOS); |
| | | typeVO.setTypeProgress(getBigDecimalPercent(divideDevice)); |
| | | typeVO.setProgress(divideDevice.toString()); |
| | | sgGxDOS.add(typeVO); |
| | | } |
| | | BigDecimal sgGxSize = BigDecimal.valueOf(sgGxDOS.size()); |
| | | double sum = sgGxDOS.stream().mapToDouble(s -> Double.parseDouble(s.getProgress())).sum(); |
| | | BigDecimal sgGxOver = BigDecimal.valueOf(sum); |
| | | BigDecimal divideSgGx = sgGxOver.divide(sgGxSize, 2, RoundingMode.HALF_UP); |
| | | ptypeVO.setPTypeProgress(getBigDecimalPercent(divideSgGx)); |
| | | ptypeVO.setSgTypeVOS(sgGxDOS); |
| | | pTypes.add(ptypeVO); |
| | | } |
| | | BigDecimal allDeviceSize = BigDecimal.valueOf(allDevice.size()); |
| | | if (!allDeviceSize.equals(BigDecimal.ZERO)){ |
| | | 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.setSgGxDOS(sgGxDOS); |
| | | sgProjectInfoDO.setPtypeVOS(pTypes); |
| | | sgProjectInfoDO.setProjectProgress( getBigDecimalPercent(allDivideDevice)); |
| | | sgProjectInfoDO.setProjectProgressNum(allDivideDevice); |
| | | } |
| | |
| | | //片区 |
| | | if (ywxtAdDetail == null) { |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsZero(code); |
| | | getDeviceTypes(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); |
| | | updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getPAdCode(), ywxtAdDetail.getPAdName(), "0"); |
| | | } else {//区县 |
| | | sgStatisProVOS = sgProjectInfoMapper.getsgStatisticsList(code); |
| | | getDeviceTypes(sgStatisProVOS); |
| | | updateProjectProgress(sgStatisProVOS, ywxtAdDetail.getAdCode(), ywxtAdDetail.getAdName(), "3"); |
| | | } |
| | | return sgStatisProVOS; |
| | | } |
| | | |
| | | /** |
| | | * 统计设备类型开工率 |
| | | * @param sgStatisProVOS |
| | | */ |
| | | private void getDeviceTypes(List<SgStatisProVO> sgStatisProVOS) { |
| | | if (CollectionUtils.isNotEmpty(sgStatisProVOS)){ |
| | | for (SgStatisProVO vo : sgStatisProVOS) { |
| | | String proIds = vo.getProIds(); |
| | | if (StringUtils.isNotBlank(proIds)){ |
| | | List<SgStatisDeviceVO> deviceVOS = sgProjectInfoMapper.getDeviceTypes("("+proIds+")"); |
| | | if(CollectionUtils.isNotEmpty(deviceVOS)){ |
| | | Map<String, SgStatisDeviceVO> map = deviceVOS.stream().collect(Collectors.toMap(SgStatisDeviceVO::getPType, Function.identity())); |
| | | //表面变形 |
| | | SgStatisDeviceVO sg108 = map.get("sg108"); |
| | | if (Objects.nonNull(sg108)){ |
| | | Integer deviceCount = sg108.getDeviceCount(); |
| | | Integer deviceStart = sg108.getDeviceStart(); |
| | | vo.setSurfaceNum(deviceCount); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setSeepageProgress("0%"); |
| | | } |
| | | } |
| | | //视频 |
| | | SgStatisDeviceVO sg104 = map.get("sg104"); |
| | | if (Objects.nonNull(sg104)){ |
| | | Integer deviceCount = sg104.getDeviceCount(); |
| | | Integer deviceStart = sg104.getDeviceStart(); |
| | | vo.setVideoNum(deviceCount); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setVideoProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setVideoProgress("0%"); |
| | | } |
| | | } |
| | | //渗压 |
| | | SgStatisDeviceVO sg101 = map.get("sg101"); |
| | | if (Objects.nonNull(sg101)){ |
| | | Integer deviceCount = sg101.getDeviceCount(); |
| | | Integer deviceStart = sg101.getDeviceStart(); |
| | | vo.setTransNum(deviceCount); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setTransProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setTransProgress("0%"); |
| | | } |
| | | } |
| | | //渗流 |
| | | SgStatisDeviceVO sg102 = map.get("sg102"); |
| | | if (Objects.nonNull(sg102)){ |
| | | Integer deviceCount = sg102.getDeviceCount(); |
| | | Integer deviceStart = sg102.getDeviceStart(); |
| | | vo.setSeepageNum(deviceCount); |
| | | if (deviceCount != 0){ |
| | | BigDecimal divide = BigDecimal.valueOf(deviceStart).divide(BigDecimal.valueOf(deviceCount), 2, BigDecimal.ROUND_UP); |
| | | vo.setSeepageProgress(getBigDecimalPercent(divide)); |
| | | }else { |
| | | vo.setSeepageProgress("0%"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void updateProjectProgress(List<SgStatisProVO> sgStatisProVOS, String pcode, String pname, String adGrad) { |
| | |
| | | List<SgProjectInfoDO> projectProgress = getProjectProgress(list); |
| | | projectProgress.forEach(p -> { |
| | | |
| | | List<SgTypeVO> sgGxDOS = p.getSgGxDOS(); |
| | | sgGxDOS.forEach(sgTypeVO -> { |
| | | String typeProgress = sgTypeVO.getTypeProgress().replace("%", ""); |
| | | List<PtypeVO> ptypeVOS = p.getPtypeVOS(); |
| | | ptypeVOS.forEach(sgTypeVO -> { |
| | | String typeProgress = sgTypeVO.getPTypeProgress().replace("%", ""); |
| | | BigDecimal percentageBigDecimal = new BigDecimal(typeProgress).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); |
| | | bigDecimals.merge(sgTypeVO.getTypeName(), percentageBigDecimal, BigDecimal::add); |
| | | bigDecimals.merge(sgTypeVO.getPTypeName(), percentageBigDecimal, BigDecimal::add); |
| | | }); |
| | | |
| | | }); |
| | |
| | | QueryWrapper<SgProgressReportDO> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("gx_step_id", stepIdForNull) |
| | | .eq("profram_id", programId); |
| | | SgProgressReportDO sgProgressReportDO = sgProgressReportMapper.selectOne(queryWrapper); |
| | | SgProgressReportDO sgProgressReportDO = null; |
| | | |
| | | List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(queryWrapper); |
| | | if (CollectionUtils.isNotEmpty(sgProgressReportDOS)) { |
| | | List<SgProgressReportDO> collect = sgProgressReportDOS.stream().filter(s -> s.getStatus() == null || (s.getStatus() != 4 && !(s.getStatus() == 3 && s.getResubmit() != 0))).collect(Collectors.toList()); |
| | | if (!collect.isEmpty()){ |
| | | sgProgressReportDO = collect.get(0); |
| | | } |
| | | } |
| | | PreAcceVO preAcceVO = new PreAcceVO(); |
| | | if (sgProgressReportDO!= null) { |
| | | preAcceVO.setId(sgProgressReportDO.getId().toString()); |
| | |
| | | import cn.gistack.sm.sg.DO.SgProgressReportDO; |
| | | import cn.gistack.sm.sg.DO.SgProjectPersonConfigDO; |
| | | import cn.gistack.sm.sg.DO.SgProjectRolePersonV0; |
| | | import cn.gistack.sm.sg.DO.SgReportUserDO; |
| | | import cn.gistack.sm.sg.DTO.AddSgProjectPersonConfigDTO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.mapper.SgProgressReportMapper; |
| | | import cn.gistack.sm.sg.mapper.SgProjectPersonConfigMapper; |
| | | import cn.gistack.sm.sg.mapper.SgReportUserMapper; |
| | | import cn.gistack.sm.sg.service.SgProjectPersonConfigService; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | private SgProjectPersonConfigMapper projectPersonConfigMapper; |
| | | @Autowired |
| | | private SgProgressReportMapper sgProgressReportMapper; |
| | | |
| | | @Autowired |
| | | private SgReportUserMapper sgReportUserMapper; |
| | | @Override |
| | | public List<String> getRoleList(ProjectSearchDTO searchDTO) { |
| | | List<String> list = projectPersonConfigMapper.getRoleList(searchDTO); |
| | |
| | | projectPersonConfigMapper.insert(sgProjectPersonConfigDO); |
| | | }else { |
| | | SgProjectPersonConfigDO old = projectPersonConfigMapper.selectById(id); |
| | | boolean isReport = !new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getProframId, old.getProgramId()).list().isEmpty(); |
| | | List<SgReportUserDO> reportUserDOS = sgProgressReportMapper.selectProcessUserByProjectId(old.getProgramId()); |
| | | if (Objects.isNull(userId)){ |
| | | if (isReport){ |
| | | throw new ServiceException("此项目配置存在审批,不允许修改"); |
| | | } |
| | | projectPersonConfigMapper.deleteById(id); |
| | | }else if (!old.getUserId().equals(sgProjectPersonConfigDO.getUserId())){ |
| | | if (isReport){ |
| | | throw new ServiceException("此项目配置存在审批,不允许修改"); |
| | | if (!CollectionUtils.isEmpty(reportUserDOS)){ |
| | | reportUserDOS.forEach(s->{ |
| | | if (Objects.equals(old.getUserId(), s.getUserId())){ |
| | | // sgReportUserMapper.deleteById(s.getId()); |
| | | } |
| | | }); |
| | | } |
| | | }else if (!old.getUserId().equals(sgProjectPersonConfigDO.getUserId())){ |
| | | projectPersonConfigMapper.updateById(sgProjectPersonConfigDO); |
| | | if (!CollectionUtils.isEmpty(reportUserDOS)){ |
| | | reportUserDOS.forEach(s->{ |
| | | if (Objects.equals(old.getUserId(), s.getUserId())){ |
| | | s.setUserId(sgProjectPersonConfigDO.getUserId()); |
| | | sgReportUserMapper.updateById(s); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | case |
| | | when b."ad_grad" = 2 THEN b."ad_code" |
| | | when c."ad_grad" = 2 THEN c."ad_code" |
| | | ELSE d."ad_code" END AS cityCode |
| | | ELSE d."ad_code" END AS cityCode, |
| | | a."eng_scal" AS engScal |
| | | FROM sjzt_md."att_res_base" a |
| | | LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid" |
| | | LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid" |
| | |
| | | @Param("cityCode") String cityCode, |
| | | @Param("type") String type); |
| | | |
| | | List<PersonVO> getCityCountyPersonListNewByResGuid(@Param("countyCode") String countyCode, |
| | | @Param("cityCode") String cityCode, |
| | | @Param("type") String type); |
| | | |
| | | List<PatrolResponsiblePerson> getPatrolResponsiblePersonByResCdList(@Param("ids") List<String> reservoirList); |
| | | |
| | | /** |
| | |
| | | ) |
| | | </select> |
| | | |
| | | <select id="getCityCountyPersonListNewByResGuid" resultType="cn.gistack.sm.sjztmd.vo.PersonVO"> |
| | | select * from ( |
| | | ( |
| | | select real_name as name, phone, '预警短信发送人员' as type |
| | | from YWXT.blade_user bu |
| | | left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0 |
| | | left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0 |
| | | where bu.is_deleted = 0 |
| | | and br.role_alias = 'xjyjdxfsry' |
| | | and bd.ad_code = #{countyCode} limit 1 |
| | | ) |
| | | union |
| | | ( |
| | | select real_name as name, phone, '预警短信发送人员' as type |
| | | from YWXT.blade_user bu |
| | | left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0 |
| | | left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0 |
| | | where bu.is_deleted = 0 |
| | | and br.role_alias = 'qxswjgly' |
| | | and bd.ad_code = #{countyCode} limit 1 |
| | | ) |
| | | union |
| | | ( |
| | | select real_name as name, phone, '预警短信发送人员' as type |
| | | from YWXT.blade_user bu |
| | | left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0 |
| | | left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0 |
| | | where bu.is_deleted = 0 |
| | | and br.role_alias = 'sjyjdxfsry' |
| | | and bd.ad_code = #{cityCode} limit 1 |
| | | ) |
| | | union |
| | | ( |
| | | select real_name as name, phone, '预警短信发送人员' as type |
| | | from YWXT.blade_user bu |
| | | left join YWXT.blade_dept bd on locate(bd.id, bu.dept_id) > 0 and bd.is_deleted = 0 |
| | | left join YWXT.blade_role br on locate(br.id, bu.role_id) > 0 and br.is_deleted = 0 |
| | | where bu.is_deleted = 0 |
| | | and br.role_alias = 'dsswjgly' |
| | | and bd.ad_code = #{cityCode} limit 1 |
| | | ) |
| | | ) limit 1 |
| | | </select> |
| | | |
| | | <select id="getPatrolResponsiblePersonByResCdList" |
| | | resultType="cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson"> |
| | | |
| | |
| | | // 查询当前水库对应的市级编号和县区编号 |
| | | AttResBaseVO attResBaseVO = attResBaseService.getCityCountyCodeByResGuid(res_cd); |
| | | if (null!= attResBaseVO) { |
| | | |
| | | //如果是小型水库只发县级短信预警角色或者县级管理员 |
| | | if (attResBaseVO.getEngScal().equals("小(2)型") || attResBaseVO.getEngScal().equals("小(1)型")) { |
| | | // 通过编号查询对应的人员 |
| | | List<PersonVO> personListByResGuid = baseMapper.getCityCountyPersonListNewByResGuid(attResBaseVO.getCountyCode(), attResBaseVO.getCityCode(), ""); |
| | | personVOList.addAll(personListByResGuid); |
| | | return personVOList; |
| | | } |
| | | |
| | | // 通过编号查询对应的人员 |
| | | List<PersonVO> personListByResGuid = baseMapper.getCityCountyPersonListByResGuid(attResBaseVO.getCountyCode(), attResBaseVO.getCityCode(), ""); |
| | | personVOList.addAll(personListByResGuid); |
| | |
| | | String holeText = ""; |
| | | if (norspi.getIsGate().equals("是")) { |
| | | gateText = "有闸控制"; |
| | | if (null != norspi.getGateNum()) { |
| | | String hole = norspi.getGateNum() == 1 ? "单" : String.valueOf(norspi.getGateNum()); |
| | | holeText = StringUtil.format(",{}孔", hole); |
| | | } |
| | | } else { |
| | | gateText = "无闸控制"; |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sjztods.controller; |
| | | |
| | | import cn.gistack.sm.sjztods.entity.SkxsQkTj; |
| | | import cn.gistack.sm.sjztods.entity.WaterDataTermites; |
| | | import cn.gistack.sm.sjztods.service.IWaterDataTermitesService; |
| | | import cn.gistack.sm.sjztods.vo.WaterDataTermitesVO; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | @Slf4j |
| | | @Api(tags = "白蚁监测数据表") |
| | | @RestController |
| | | @RequestMapping("/sjztods/waterDataTermites") |
| | | @AllArgsConstructor |
| | | public class WaterDataTermitesController { |
| | | |
| | | private final IWaterDataTermitesService waterDataTermitesService; |
| | | |
| | | /** |
| | | * 修改状态 |
| | | * @param waterDataTermites |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "修改状态", notes = "修改状态") |
| | | @PostMapping(value = "/updateStatus") |
| | | public R updateStatus(@RequestBody WaterDataTermitesVO waterDataTermites) { |
| | | if (StringUtil.isAllBlank(waterDataTermites.getStartTime(), |
| | | waterDataTermites.getEndTime(), |
| | | waterDataTermites.getOrder()) || |
| | | null == waterDataTermites.getStatus()) { |
| | | return R.fail("非法参数"); |
| | | } |
| | | |
| | | boolean ret = waterDataTermitesService.updateWaterDataTermites(waterDataTermites.getStartTime(), |
| | | waterDataTermites.getEndTime(), |
| | | waterDataTermites.getStatus(), |
| | | waterDataTermites.getOrder()); |
| | | return R.status(ret); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sjztods.mapper; |
| | | |
| | | import cn.gistack.sm.sjztods.entity.WaterDataTermites; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | public interface WaterDataTermitesMapper extends BaseMapper<WaterDataTermites> { |
| | | |
| | | int updateWaterDataTermites(@Param("startTime") String startTime, |
| | | @Param("endTime") String endTime, |
| | | @Param("status") Integer status, |
| | | @Param("order") String order); |
| | | |
| | | } |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.sjztods.mapper.WaterDataTermitesMapper"> |
| | | |
| | | <update id="updateWaterDataTermites"> |
| | | update SJZT_ODS."water_data_termites" set "status" = #{status} |
| | | WHERE "order" = #{order} and "ob_date" >= #{startTime} and "ob_date" <= #{endTime} |
| | | </update> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | package cn.gistack.sm.sjztods.service; |
| | | |
| | | import cn.gistack.sm.sjztods.entity.WaterDataTermites; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * 白蚁监测数据 |
| | | */ |
| | | public interface IWaterDataTermitesService extends IService<WaterDataTermites> { |
| | | |
| | | boolean updateWaterDataTermites(String startTime, |
| | | String endTime, |
| | | Integer status, |
| | | String order); |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.sjztods.service.impl; |
| | | |
| | | import cn.gistack.sm.sjztods.entity.WaterDataTermites; |
| | | import cn.gistack.sm.sjztods.mapper.WaterDataTermitesMapper; |
| | | import cn.gistack.sm.sjztods.service.IWaterDataTermitesService; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service |
| | | @DS("ztznwh") |
| | | public class WaterDataTermitesServiceImpl extends ServiceImpl<WaterDataTermitesMapper, WaterDataTermites> implements IWaterDataTermitesService { |
| | | |
| | | |
| | | @Override |
| | | public boolean updateWaterDataTermites(String startTime, String endTime, Integer status, String order) { |
| | | return baseMapper.updateWaterDataTermites(startTime, endTime, status, order) > 0; |
| | | } |
| | | } |