ke
2024-08-27 f73dbcd6c21d28ab1e98840eee73c6d09bd0f929
Merge remote-tracking branch 'origin/jtdev' into jtdev
38 files modified
13 files added
1303 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java 37 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java 18 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java 25 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java 3 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PtypeVO.java 22 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisDeviceVO.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java 26 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/entity/WaterDataTermites.java 35 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/vo/WaterDataTermitesVO.java 12 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java 37 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml 192 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java 4 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java 36 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java 47 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java 39 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/ExtremumDO.java 76 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/mapper/ExtremumMapper.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IExtremumService.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/ExtremumServiceImpl.java 43 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml 11 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml 90 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java 24 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java 204 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java 29 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml 3 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml 44 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/WaterDataTermitesController.java 49 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.java 14 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.xml 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IWaterDataTermitesService.java 16 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/WaterDataTermitesServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
@@ -91,4 +91,15 @@
    @ApiModelProperty("是否已删除")
    private Integer isDeleted;
    /**
     * 水库guid
     */
    @ApiModelProperty("水库guid")
    private String resGuid;
    /**
     * 告警规则id
     */
    private Long alarmRuleId;
}
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java
@@ -14,4 +14,41 @@
     * 是否导出,不为空是导出,不分页
     */
    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;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java
@@ -50,6 +50,11 @@
    private String executeTime;
    /**
     * 任务最后修改时间
     */
    private String gmtModified;
    /**
     * 被叫号码量
     */
    private String calleeNumberCount;
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java
@@ -46,10 +46,24 @@
     */
    private String source;
    /**
     * 水库guid
     */
    private String resGuid;
    /**
     * 反馈
     */
    private String feedback;
    //是否异常 1是 2 否
    private String alertStatus;
    /**
     * 告警规则id
     */
    private Long alarmRuleId;
    /**
     * 告警模板id
     */
    private String templateId;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java
@@ -103,6 +103,25 @@
     */
    private String videoUrls;
    /**
     * 文件附件
     */
    private String fileUrls;
    /**
     * 图片附件
     */
    private String imageName;
    /**
     * 视频附件
     */
    private String videoName;
    /**
     * 文件附件
     */
    private String fileName;
    /**
     * 审核意见
     */
@@ -123,4 +142,10 @@
     *是否重新提交 0是 ,1否
     */
    private Integer resubmit;
    /**
     * 重新上报单据ID
     */
    @TableField(exist = false)
    private String resubmitId;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java
@@ -1,6 +1,7 @@
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;
@@ -172,7 +173,7 @@
    @TableField(exist = false)
    private List<SgTypeVO> sgGxDOS;
    private List<PtypeVO> ptypeVOS;
    @TableField(exist = false)
    private List<PreAcceVO> preAcce;
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
@@ -64,5 +64,10 @@
     * 项目排序 0状态 , 1进度 ,2注册码
     */
    private Integer projectSort;
    private String auditPerson;
    private List<String> sgCodeS;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/PtypeVO.java
New file
@@ -0,0 +1,22 @@
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;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
@@ -29,4 +29,7 @@
    private Integer deviceStatus;
    private Integer projectStatus;
    private String progressName;
    private String Ptype;
    private String PtypeName;
    private Integer resubmit;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisDeviceVO.java
New file
@@ -0,0 +1,10 @@
package cn.gistack.sm.sg.VO;
import lombok.Data;
@Data
public class SgStatisDeviceVO {
    private Integer deviceCount;
    private Integer deviceStart;
    private String pType;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStatisProVO.java
@@ -20,6 +20,32 @@
    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;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
@@ -13,4 +13,5 @@
private String     stepNum;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date reportTime;
private Integer resubmit;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java
@@ -16,5 +16,6 @@
public class SgTypeVO {
    private String typeName;
    private String typeProgress;
    private String progress;
    private List<SgDeviceDO> deviceDOS;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/entity/WaterDataTermites.java
New file
@@ -0,0 +1,35 @@
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;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztods/vo/WaterDataTermitesVO.java
New file
@@ -0,0 +1,12 @@
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;
}
skjcmanager/skjcmanager-service-api/skjcmanager-system-api/src/main/java/cn/gistack/system/entity/Dept.java
@@ -110,6 +110,12 @@
    @ApiModelProperty(value = "区划名称")
    private String adCode;
    /**
     * 工程区划
     */
    @ApiModelProperty(value = "工程区划")
    private String sgCode;
    private String adGrad;
    private String resGuid;
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -1003,6 +1003,8 @@
            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));
@@ -1087,6 +1089,8 @@
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            messageRecord.setRecipient(phone);
            messageRecord.setTemplateId(smsTemplate.getTemplateId());
            messageRecord.setAlarmRuleId(alarmRule.getId());
            StringBuilder builder = new StringBuilder();
@@ -1165,6 +1169,8 @@
            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));
@@ -1237,6 +1243,8 @@
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            messageRecord.setRecipient(phone);
            messageRecord.setTemplateId(smsTemplate.getTemplateId());
            messageRecord.setAlarmRuleId(alarmRule.getId());
            List<String> contentList = new ArrayList<>();
            //因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行
            temps.forEach(info -> {
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -218,7 +218,7 @@
                // 遍历
                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);
                    }
                }
            }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
@@ -89,7 +89,7 @@
            // 记录发送记录操作
            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);
@@ -119,7 +119,7 @@
            // 记录发送记录操作
            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);
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
@@ -108,4 +108,17 @@
       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));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
@@ -62,7 +62,7 @@
        // 记录发送记录操作
        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);
        }
    }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
@@ -2,6 +2,7 @@
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;
@@ -28,4 +29,40 @@
     * @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);
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
@@ -39,4 +39,196 @@
        </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') &lt;= #{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') &lt;= #{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') &lt;= #{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') &lt;= #{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>
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
@@ -22,4 +22,12 @@
     * @param list
     */
    int batchSaveSendRecord(List<SmsRecord> list);
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsRecord
     * @return
     */
    Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord);
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
@@ -55,9 +55,11 @@
     * @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);
    /**
     * 发送降雨短信
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
@@ -1,13 +1,18 @@
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;
/**
@@ -16,6 +21,9 @@
 */
@Service
public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
    @Autowired
    private AlarmRuleService alarmRuleService;
    /**
     * 自定义分页列表查询
@@ -42,4 +50,32 @@
    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));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -2,7 +2,6 @@
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;
@@ -28,25 +27,21 @@
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;
@@ -111,7 +106,7 @@
                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);
            }
@@ -291,6 +286,8 @@
                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));
@@ -318,7 +315,7 @@
                    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());
@@ -449,10 +446,18 @@
     * @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());
@@ -461,6 +466,8 @@
        smsRecord.setResultId(resultId);
        smsRecord.setResponseStatus(code);
        smsRecord.setResponseMsg(sendMsg);
        smsRecord.setResGuid(resGuid);
        smsRecord.setAlarmRuleId(alarmRuleId);
        //插入记录
        smsRecordService.save(smsRecord);
        // 返回
@@ -800,8 +807,10 @@
            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();
@@ -835,7 +844,8 @@
                // 设置内容
                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<>();
@@ -914,8 +924,10 @@
            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();
@@ -948,8 +960,9 @@
                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<>();
@@ -1034,12 +1047,14 @@
            });
            // 如果一人对应水库数量超过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();
@@ -1072,8 +1087,10 @@
                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<>();
@@ -1191,7 +1208,7 @@
            // 设置内容
            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);
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
@@ -10,6 +10,7 @@
        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,
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DbReportController.java
@@ -3,9 +3,12 @@
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;
@@ -33,7 +36,7 @@
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) {
@@ -83,4 +86,38 @@
    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);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/ExtremumDO.java
New file
@@ -0,0 +1,76 @@
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;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/mapper/ExtremumMapper.java
New file
@@ -0,0 +1,8 @@
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> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IExtremumService.java
New file
@@ -0,0 +1,17 @@
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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/ExtremumServiceImpl.java
New file
@@ -0,0 +1,43 @@
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);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
@@ -1,6 +1,7 @@
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;
@@ -39,4 +40,6 @@
    List<SgProgressReportVO> queryPageListAll(@Param("page") IPage<SgProgressReportVO> page, @Param("dto") ProjectSearchDTO searchDTO);
    Long selectProframId(Long deviceId);
    List<SgReportUserDO> selectProcessUserByProjectId(@Param("programId") Long programId);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -99,13 +99,13 @@
            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 &gt;= #{dto.startTime}
@@ -148,7 +148,8 @@
            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
@@ -190,4 +191,8 @@
    <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>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
@@ -3,10 +3,7 @@
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;
@@ -51,5 +48,9 @@
    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 );
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -42,6 +42,24 @@
             #{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>
@@ -52,6 +70,20 @@
            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
@@ -60,6 +92,8 @@
        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,
@@ -70,12 +104,13 @@
        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
@@ -96,6 +131,8 @@
                #{id}
            </foreach>
        </if>
       ORDER BY pro.status desc ,pro.project_progress desc
    </select>
    <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO">
       SELECT
@@ -144,14 +181,16 @@
    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
@@ -174,8 +213,9 @@
        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
        FROM
    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
    WHERE
@@ -196,7 +236,8 @@
    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
@@ -307,8 +348,9 @@
        pro.deviceStatus,
        pro.projectStatus,
        pro.reportId,
        pro.lon_lat
    from
        pro.lon_lat,
        pro.project_progress
        from
        (SELECT
        pro.id,
        pro.project_name,
@@ -328,7 +370,8 @@
        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
@@ -362,11 +405,32 @@
                #{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>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxServiceImpl.java
@@ -106,6 +106,6 @@
        if (CollectionUtils.isNotEmpty(list)){
            throw  new ServiceException("此工序存在工序步骤,不允许删除");
        }
        this.delete(id);
        sgGxMapper.deleteById(id);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -80,6 +80,10 @@
    @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();
@@ -120,7 +124,7 @@
        if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) {
            for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) {
                if (sgProgressReportDO1.getStatus()!= 2) {
                if (sgProgressReportDO1.getStatus()!= 2 && sgProgressReportDO1.getStatus()!= 3)  {
                    throw new ServiceException("请先完成施工准备的审批!");
                }
            }
@@ -132,13 +136,23 @@
        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) {
@@ -147,6 +161,7 @@
                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() + "的审批!");
@@ -228,6 +243,7 @@
        }
        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;
    }
@@ -408,6 +424,7 @@
    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);
@@ -482,6 +499,9 @@
    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);
    }
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -18,11 +18,13 @@
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;
@@ -53,17 +55,31 @@
    @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
@@ -103,54 +119,72 @@
            }
            SgProjectInfoVO sgProjectInfoVO = value.get(0);
            SgProjectInfoDO sgProjectInfoDO = SgProjectInfoDO.builder().id(porId).lonLat(sgProjectInfoVO.getLonLat()).status(sgProjectInfoVO.getProjectStatus()).projectName(sgProjectInfoVO.getProjectName()).build();
            List<SgTypeVO> sgGxDOS = new ArrayList<>();
            //类型分组
            Map<String, List<SgProjectInfoVO>> GxMap = value.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();
                if (CollectionUtils.isEmpty(gxList)){
            //父类型分组
            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;
                }
                SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build();
                List<SgDeviceDO> deviceDOS = new ArrayList<>();
                //设备分组
                Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().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());
                    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> stepOver = stepDOS.stream().filter(s -> s.getApprovalStatus() != null && s.getApprovalStatus() == 2).collect(Collectors.toList());
                    BigDecimal stepSize = BigDecimal.valueOf(stepDOS.size());
                    BigDecimal stepOverSize = BigDecimal.ZERO;
                    if (!stepOver.isEmpty()){
                        stepOverSize = BigDecimal.valueOf(stepOver.size());
                PtypeVO ptypeVO = PtypeVO.builder().pTypeName(ptyValue.get(0).getPtypeName()).build();
                List<SgTypeVO> sgGxDOS = new ArrayList<>();
                //类型分组
                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();
                    if (CollectionUtils.isEmpty(gxList)){
                        continue;
                    }
                    BigDecimal divide = stepOverSize.divide(stepSize, 2, RoundingMode.HALF_UP);
                    sgDeviceDO.setStatus(divide.compareTo(new BigDecimal(1)) == 0?2:deList.get(0).getDeviceStatus());
                    sgDeviceDO.setProgress(divide.toString());
                    sgDeviceDO.setDeviceProgress(getBigDecimalPercent(divide));
                    sgDeviceDO.setStepDOList(stepDOS);
                    deviceDOS.add(sgDeviceDO);
                    allDevice.add(sgDeviceDO);
                    SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build();
                    List<SgDeviceDO> deviceDOS = new ArrayList<>();
                    //设备分组
                    Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().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());
                        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;
                        if (!stepOver.isEmpty()){
                            stepOverSize = BigDecimal.valueOf(stepOver.size());
                        }
                        BigDecimal divide = stepOverSize.divide(stepSize, 2, RoundingMode.HALF_UP);
                        sgDeviceDO.setStatus(divide.compareTo(new BigDecimal(1)) == 0?2:deList.get(0).getDeviceStatus());
                        sgDeviceDO.setProgress(divide.toString());
                        sgDeviceDO.setDeviceProgress(getBigDecimalPercent(divide));
                        sgDeviceDO.setStepDOList(stepDOS);
                        deviceDOS.add(sgDeviceDO);
                        allDevice.add(sgDeviceDO);
                    }
                    BigDecimal deviceSize = BigDecimal.valueOf(deviceDOS.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);
                    typeVO.setTypeProgress(getBigDecimalPercent(divideDevice));
                    typeVO.setProgress(divideDevice.toString());
                    sgGxDOS.add(typeVO);
                }
                BigDecimal deviceSize = BigDecimal.valueOf(deviceDOS.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);
                typeVO.setTypeProgress(getBigDecimalPercent(divideDevice));
                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);
            }
@@ -251,17 +285,90 @@
        //片区
        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) {
@@ -314,11 +421,11 @@
            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);
                });
            });
@@ -384,8 +491,15 @@
        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());
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java
@@ -3,11 +3,14 @@
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;
@@ -33,6 +36,9 @@
    private SgProjectPersonConfigMapper projectPersonConfigMapper;
    @Autowired
    private SgProgressReportMapper sgProgressReportMapper;
    @Autowired
    private SgReportUserMapper sgReportUserMapper;
    @Override
    public List<String> getRoleList(ProjectSearchDTO searchDTO) {
        List<String> list = projectPersonConfigMapper.getRoleList(searchDTO);
@@ -48,17 +54,26 @@
                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);
                            }
                        });
                    }
                }
            }
        }
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -343,7 +343,8 @@
               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"
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
@@ -64,6 +64,10 @@
                                                         @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);
    /**
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
@@ -233,6 +233,50 @@
        )
    </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">
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
@@ -160,6 +160,15 @@
        // 查询当前水库对应的市级编号和县区编号
        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);
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
@@ -327,8 +327,10 @@
        String holeText = "";
        if (norspi.getIsGate().equals("是")) {
            gateText = "有闸控制";
            String hole = norspi.getGateNum() == 1 ? "单" : String.valueOf(norspi.getGateNum());
            holeText = StringUtil.format(",{}孔", hole);
            if (null != norspi.getGateNum()) {
                String hole = norspi.getGateNum() == 1 ? "单" : String.valueOf(norspi.getGateNum());
                holeText = StringUtil.format(",{}孔", hole);
            }
        } else {
            gateText = "无闸控制";
        }
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/controller/WaterDataTermitesController.java
New file
@@ -0,0 +1,49 @@
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);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.java
New file
@@ -0,0 +1,14 @@
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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/WaterDataTermitesMapper.xml
New file
@@ -0,0 +1,10 @@
<?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" &gt;= #{startTime} and "ob_date" &lt;= #{endTime}
    </update>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/IWaterDataTermitesService.java
New file
@@ -0,0 +1,16 @@
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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/WaterDataTermitesServiceImpl.java
New file
@@ -0,0 +1,19 @@
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;
    }
}