diff --git a/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql b/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql index 053ca751..189c7db5 100644 --- a/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql +++ b/script/sql/zfjd-refactoring-v1/其他/njy/njy.sql @@ -6,3 +6,5 @@ ALTER TABLE enforcement_inspection_program ADD COLUMN create_by_name VARCHAR(64) ALTER TABLE enforcement_registration ADD COLUMN other_reasons varchar(500) DEFAULT NULL COMMENT '其他原因'; + +ALTER TABLE siq_msg_info ADD error_msg varchar(500) NULL COMMENT '错误信息'; diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/SiqMsgInfoController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/SiqMsgInfoController.java new file mode 100644 index 00000000..a4f42dc2 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/SiqMsgInfoController.java @@ -0,0 +1,105 @@ +package com.zdxt.enforcementcode.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import com.zdxt.enforcementcode.domain.vo.SiqMsgInfoVo; +import com.zdxt.enforcementcode.domain.bo.SiqMsgInfoBo; +import com.zdxt.enforcementcode.service.ISiqMsgInfoService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 深I企消息信息 + * + * @author niujiyi + * @date 2026-07-29 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/enforcementcode/msgInfo") +public class SiqMsgInfoController extends BaseController { + + private final ISiqMsgInfoService siqMsgInfoService; + + /** + * 查询深I企消息信息列表 + */ + @SaCheckPermission("enforcementcode:msgInfo:list") + @GetMapping("/list") + public TableDataInfo list(SiqMsgInfoBo bo, PageQuery pageQuery) { + return siqMsgInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出深I企消息信息列表 + */ + @SaCheckPermission("enforcementcode:msgInfo:export") + @Log(title = "深I企消息信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SiqMsgInfoBo bo, HttpServletResponse response) { + List list = siqMsgInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "深I企消息信息", SiqMsgInfoVo.class, response); + } + + /** + * 获取深I企消息信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("enforcementcode:msgInfo:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(siqMsgInfoService.queryById(id)); + } + + /** + * 新增深I企消息信息 + */ + @SaCheckPermission("enforcementcode:msgInfo:add") + @Log(title = "深I企消息信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SiqMsgInfoBo bo) { + return toAjax(siqMsgInfoService.insertByBo(bo)); + } + + /** + * 修改深I企消息信息 + */ + @SaCheckPermission("enforcementcode:msgInfo:edit") + @Log(title = "深I企消息信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SiqMsgInfoBo bo) { + return toAjax(siqMsgInfoService.updateByBo(bo)); + } + + /** + * 删除深I企消息信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("enforcementcode:msgInfo:remove") + @Log(title = "深I企消息信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(siqMsgInfoService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpNoticeController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpNoticeController.java index 6a8319f6..ee3a2efb 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpNoticeController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfCpNoticeController.java @@ -56,6 +56,7 @@ public class AppEnfCpNoticeController { * 保存预告(草稿/发布) * status=0 存为草稿, status=1 发布预告 */ + @SaIgnore @PostMapping() public R save(@RequestBody EfcodeCpNoticeBo bo) { return R.ok(efcodeCpNoticeService.saveNotice(bo)); @@ -109,4 +110,13 @@ public class AppEnfCpNoticeController { efcodeCpNoticeMessageService.insertByBo(bo); return R.ok(); } + + /** + * 删除留言 + */ + @GetMapping("/removeMessage") + public R removeMessage(String[] ids) { + efcodeCpNoticeMessageService.deleteWithValidByIds(List.of(ids), false); + return R.ok(); + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/SiqMsgInfo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/SiqMsgInfo.java new file mode 100644 index 00000000..7260c530 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/SiqMsgInfo.java @@ -0,0 +1,69 @@ +package com.zdxt.enforcementcode.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 深I企消息信息对象 siq_msg_info + * + * @author niujiyi + * @date 2026-07-29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("siq_msg_info") +public class SiqMsgInfo extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键自增ID + */ + @TableId(value = "id") + private Long id; + + /** + * 任务ID + */ + private String taskId; + + /** + * 来源ID + */ + private String sourceId; + + /** + * 发送给深I企状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败 + */ + private Long status; + + /** + * 站内信发送状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败;5-任务取消 + */ + private Long sendStatus; + + /** + * 发送完成时间(时间戳,毫秒) + */ + private String sendFinishedTime; + + /** + * 是否删除 0=否 1=是 + */ + private Long isDelete; + + /** + * 备注 + */ + private String remark; + + /** + * 错误信息 + */ + private String errorMsg; +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SiqMsgInfoBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SiqMsgInfoBo.java new file mode 100644 index 00000000..e7235510 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/SiqMsgInfoBo.java @@ -0,0 +1,73 @@ +package com.zdxt.enforcementcode.domain.bo; + +import com.zdxt.enforcementcode.domain.SiqMsgInfo; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 深I企消息信息业务对象 siq_msg_info + * + * @author niujiyi + * @date 2026-07-29 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SiqMsgInfo.class, reverseConvertGenerate = false) +public class SiqMsgInfoBo extends BaseEntity { + + /** + * 主键自增ID + */ + @NotNull(message = "主键自增ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 任务ID + */ + private String taskId; + + /** + * 来源ID + */ + @NotBlank(message = "来源ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sourceId; + + /** + * 发送给深I企状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败 + */ + @NotNull(message = "发送给深I企状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long status; + + /** + * 站内信发送状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败;5-任务取消 + */ + private Long sendStatus; + + /** + * 发送完成时间(时间戳,毫秒) + */ + private String sendFinishedTime; + + /** + * 是否删除 0=否 1=是 + */ + @NotNull(message = "是否删除 0=否 1=是不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long isDelete; + + /** + * 备注 + */ + private String remark; + + + /** + * 错误信息 + */ + private String errorMsg; + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/SIQMsgParamBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/SIQMsgParamBo.java index b37a3ba7..acda3394 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/SIQMsgParamBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/SIQMsgParamBo.java @@ -22,4 +22,9 @@ public class SIQMsgParamBo { * 内容 */ private Map additionalData; + + /** + * 来源ID + */ + private String sourceId; } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java index e48c7aef..b3c5a76b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/bo/thirdparty/YuGaoMsgParamBo.java @@ -33,4 +33,9 @@ public class YuGaoMsgParamBo { * 执法时间 */ private String enforceDate; + + /** + * 来源ID + */ + private String sourceId; } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SiqMsgInfoVo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SiqMsgInfoVo.java new file mode 100644 index 00000000..3b82460e --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/domain/vo/SiqMsgInfoVo.java @@ -0,0 +1,81 @@ +package com.zdxt.enforcementcode.domain.vo; + +import com.zdxt.enforcementcode.domain.SiqMsgInfo; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 深I企消息信息视图对象 siq_msg_info + * + * @author niujiyi + * @date 2026-07-29 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SiqMsgInfo.class) +public class SiqMsgInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键自增ID + */ + @ExcelProperty(value = "主键自增ID") + private Long id; + + /** + * 任务ID + */ + @ExcelProperty(value = "任务ID") + private String taskId; + + /** + * 来源ID + */ + @ExcelProperty(value = "来源ID") + private String sourceId; + + /** + * 发送给深I企状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败 + */ + @ExcelProperty(value = "发送给深I企状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败") + private Long status; + + /** + * 站内信发送状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败;5-任务取消 + */ + @ExcelProperty(value = "站内信发送状态:0-待发送;1-发送成功;2-正在发送;3-发送异常;4-发送失败;5-任务取消") + private Long sendStatus; + + /** + * 发送完成时间(时间戳,毫秒) + */ + @ExcelProperty(value = "发送完成时间", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "时=间戳,毫秒") + private String sendFinishedTime; + + /** + * 是否删除 0=否 1=是 + */ + @ExcelProperty(value = "是否删除 0=否 1=是") + private Long isDelete; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SiqMsgInfoMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SiqMsgInfoMapper.java new file mode 100644 index 00000000..28211e1a --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/SiqMsgInfoMapper.java @@ -0,0 +1,15 @@ +package com.zdxt.enforcementcode.mapper; + +import com.zdxt.enforcementcode.domain.SiqMsgInfo; +import com.zdxt.enforcementcode.domain.vo.SiqMsgInfoVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 深I企消息信息Mapper接口 + * + * @author niujiyi + * @date 2026-07-29 + */ +public interface SiqMsgInfoMapper extends BaseMapperPlus { + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISiqMsgInfoService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISiqMsgInfoService.java new file mode 100644 index 00000000..27ed8f78 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/ISiqMsgInfoService.java @@ -0,0 +1,82 @@ +package com.zdxt.enforcementcode.service; + +import com.zdxt.enforcementcode.domain.vo.SiqMsgInfoVo; +import com.zdxt.enforcementcode.domain.bo.SiqMsgInfoBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 深I企消息信息Service接口 + * + * @author niujiyi + * @date 2026-07-29 + */ +public interface ISiqMsgInfoService { + + /** + * 查询深I企消息信息 + * + * @param id 主键 + * @return 深I企消息信息 + */ + SiqMsgInfoVo queryById(Long id); + + /** + * 分页查询深I企消息信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 深I企消息信息分页列表 + */ + TableDataInfo queryPageList(SiqMsgInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的深I企消息信息列表 + * + * @param bo 查询条件 + * @return 深I企消息信息列表 + */ + List queryList(SiqMsgInfoBo bo); + + /** + * 新增深I企消息信息 + * + * @param bo 深I企消息信息 + * @return 是否新增成功 + */ + Boolean insertByBo(SiqMsgInfoBo bo); + + /** + * 修改深I企消息信息 + * + * @param bo 深I企消息信息 + * @return 是否修改成功 + */ + Boolean updateByBo(SiqMsgInfoBo bo); + + /** + * 校验并批量删除深I企消息信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 添加消息日志 + * @param status + * @param sourceId + */ + void siqMsgInfoLog(Long status,String sourceId); + + /** + * 添加消息日志,错误日志 + * @param status + * @param sourceId + */ + void siqMsgInfoLogError(Long status,String sourceId, String errorMsg); +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java index c9a9f6a2..1c9964d7 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeServiceImpl.java @@ -2,7 +2,9 @@ package com.zdxt.enforcementcode.service.impl; import cn.hutool.core.util.IdUtil; import com.zdxt.enforcementcode.common.commonenum.MsgSourceTypeEnum; +import com.zdxt.enforcementcode.domain.bo.thirdparty.YuGaoMsgParamBo; import com.zdxt.enforcementcode.service.ISysMessageViewLogService; +import com.zdxt.enforcementcode.service.thirdparty.ISIQService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -42,6 +44,7 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService { private final EfcodeCpNoticeUsersMapper noticeUsersMapper; private final EfcodeCpNoticeMessageMapper noticeMessageMapper; private final ISysMessageViewLogService sysMessageViewLogService; + private final ISIQService siqService; /** * 查询行政执法检查计划-预告 */ @@ -127,6 +130,7 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService { // 如果是发布(status=1),设置发布时间 if (entity.getStatus() != null && entity.getStatus() == 1L) { entity.setPublishTime(new Date()); + } baseMapper.insert(entity); // 同步写入 notice_users 表 @@ -134,10 +138,28 @@ public class EfcodeCpNoticeServiceImpl implements IEfcodeCpNoticeService { // 发布时自动生成系统提示消息 if (entity.getStatus() != null && entity.getStatus() == 1L) { generateSystemMessage(entity); + + // 调用站内信发送预告消息 + getSendYuGaoMsg(entity); } + return "操作成功"; } + /** + * 发送预告消息 + */ + public void getSendYuGaoMsg(EfcodeCpNotice entity){ + + YuGaoMsgParamBo paramBo = new YuGaoMsgParamBo(); + paramBo.setSourceId(entity.getId()); + paramBo.setEnterpriseId(entity.getEnterpriseId()); + paramBo.setEnterpriseName(entity.getEnterpriseName()); + paramBo.setCreateByName(LoginHelper.getUsername()); + paramBo.setDeptName(entity.getDeptName()); + paramBo.setEnforceDate(entity.getEnforceDate()); + siqService.sendYuGaoMsg(paramBo); + } /** * 修改预告(仅草稿可修改)并同步更新 notice_users 表 */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SiqMsgInfoServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SiqMsgInfoServiceImpl.java new file mode 100644 index 00000000..f9613952 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/SiqMsgInfoServiceImpl.java @@ -0,0 +1,174 @@ +package com.zdxt.enforcementcode.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.zdxt.enforcementcode.domain.bo.SiqMsgInfoBo; +import com.zdxt.enforcementcode.domain.vo.SiqMsgInfoVo; +import com.zdxt.enforcementcode.domain.SiqMsgInfo; +import com.zdxt.enforcementcode.mapper.SiqMsgInfoMapper; +import com.zdxt.enforcementcode.service.ISiqMsgInfoService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 深I企消息信息Service业务层处理 + * + * @author niujiyi + * @date 2026-07-29 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SiqMsgInfoServiceImpl implements ISiqMsgInfoService { + + private final SiqMsgInfoMapper baseMapper; + + /** + * 查询深I企消息信息 + * + * @param id 主键 + * @return 深I企消息信息 + */ + @Override + public SiqMsgInfoVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询深I企消息信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 深I企消息信息分页列表 + */ + @Override + public TableDataInfo queryPageList(SiqMsgInfoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的深I企消息信息列表 + * + * @param bo 查询条件 + * @return 深I企消息信息列表 + */ + @Override + public List queryList(SiqMsgInfoBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SiqMsgInfoBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SiqMsgInfo::getId); + lqw.eq(StringUtils.isNotBlank(bo.getTaskId()), SiqMsgInfo::getTaskId, bo.getTaskId()); + lqw.eq(StringUtils.isNotBlank(bo.getSourceId()), SiqMsgInfo::getSourceId, bo.getSourceId()); + lqw.eq(bo.getStatus() != null, SiqMsgInfo::getStatus, bo.getStatus()); + lqw.eq(bo.getSendStatus() != null, SiqMsgInfo::getSendStatus, bo.getSendStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getSendFinishedTime()), SiqMsgInfo::getSendFinishedTime, bo.getSendFinishedTime()); + lqw.eq(bo.getIsDelete() != null, SiqMsgInfo::getIsDelete, bo.getIsDelete()); + return lqw; + } + + /** + * 新增深I企消息信息 + * + * @param bo 深I企消息信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SiqMsgInfoBo bo) { + SiqMsgInfo add = MapstructUtils.convert(bo, SiqMsgInfo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改深I企消息信息 + * + * @param bo 深I企消息信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SiqMsgInfoBo bo) { + SiqMsgInfo update = MapstructUtils.convert(bo, SiqMsgInfo.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SiqMsgInfo entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除深I企消息信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 添加发送日志 + * @param status + */ + @Override + public void siqMsgInfoLog(Long status,String sourceId) { + + SiqMsgInfoBo bo = new SiqMsgInfoBo(); + bo.setStatus(status); + bo.setSourceId(sourceId); + SiqMsgInfo add = MapstructUtils.convert(bo, SiqMsgInfo.class); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + } + + /** + * 添加发送日志,错误信息 + * @param status + */ + @Override + public void siqMsgInfoLogError(Long status, String sourceId,String errorMsg) { + + SiqMsgInfoBo bo = new SiqMsgInfoBo(); + bo.setStatus(status); + bo.setSourceId(sourceId); + bo.setErrorMsg(errorMsg); + SiqMsgInfo add = MapstructUtils.convert(bo, SiqMsgInfo.class); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + } + + +} diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java index 096eba96..10e95367 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/SIQServiceImpl.java @@ -19,6 +19,7 @@ import com.zdxt.enforcementcode.domain.vo.siq.*; import com.zdxt.enforcementcode.mapper.EnterpriseInformationMapper; import com.zdxt.enforcementcode.mapper.EnterpriseUserMapper; import com.zdxt.enforcementcode.service.IEnterpriseUserRefService; +import com.zdxt.enforcementcode.service.ISiqMsgInfoService; import com.zdxt.enforcementcode.service.thirdparty.ISIQService; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; @@ -46,17 +47,19 @@ public class SIQServiceImpl implements ISIQService { /** * 企业信息Mapper */ - private EnterpriseInformationMapper enterpriseInformationMapper; + private final EnterpriseInformationMapper enterpriseInformationMapper; /** * 企业用户Mapper */ - private EnterpriseUserMapper enterpriseUserMapper; + private final EnterpriseUserMapper enterpriseUserMapper; /** * 企业用户关联Service */ - private IEnterpriseUserRefService enterpriseUserRefService; + private final IEnterpriseUserRefService enterpriseUserRefService; + + private final ISiqMsgInfoService siqMsgInfoService; @Override public SIQTemplateVo getTemplateById(String templateId) { @@ -98,6 +101,7 @@ public class SIQServiceImpl implements ISIQService { variables.put("dept", paramBo.getDeptName()); variables.put("time", paramBo.getEnforceDate()); siqMsgParamBo.setAdditionalData(variables); + siqMsgParamBo.setSourceId(paramBo.getSourceId()); sendMsg(siqMsgParamBo); } log.info("企业[{}]预告消息发送完成,共发送{}条", enterpriseId, userRefList.size()); @@ -121,25 +125,37 @@ public class SIQServiceImpl implements ISIQService { toUserMetaBo.setVariables(paramBo.getAdditionalData()); toUserMetaBo.setReceiveAccount(paramBo.getReceiveAccount()); sendMsgBo.setToUser(new ToUserMetaBo[]{toUserMetaBo}); - + // 预告消息日志记录完整过程 + // 0: 待发送 + siqMsgInfoService.siqMsgInfoLog(0L,paramBo.getSourceId()); String url = siqConfig.getSiqBaseUrl() + "/egb/api/mpc/api/messageTask/v1/singleCreate"; String body = JSONObject.toJSONString(sendMsgBo); log.info("单条发送站内信请求参数: {}", body); String respJson = SIQHttpUtil.postWithSign(url, body, siqConfig.getMsgSecretKey(), siqConfig.getMsgAppId()); log.info("单条发送站内信响应结果: {}", respJson); + // 2:正在发送 + siqMsgInfoService.siqMsgInfoLog(2L,paramBo.getSourceId()); SendMsgVo sendMsg = JSON.parseObject(respJson, SendMsgVo.class); if(sendMsg.isSuccess()){ SendMsgDataVo sendMsgDataVo = JSON.parseObject(JSON.toJSONString(sendMsg.getData()), SendMsgDataVo.class); List list = sendMsgDataVo.getList(); if(CollectionUtil.isNotEmpty(list)){ MessageTaskItemVo messageTaskItemVo = list.get(0); + // 1: 发送成功 + siqMsgInfoService.siqMsgInfoLog(1L,paramBo.getSourceId()); log.info("单条发送站内信成功,taskId: {}", messageTaskItemVo.getTaskId()); } + }else{ + // 3:发送异常 + siqMsgInfoService.siqMsgInfoLogError(3L,paramBo.getSourceId(),sendMsg.getErrmsg()); } } catch (Exception e) { log.error("单条发送站内信失败", e); + // 4:发送失败 + siqMsgInfoService.siqMsgInfoLogError(4L,paramBo.getSourceId(),e.getMessage()); throw new BaseException("单条发送站内信失败"); + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/SiqMsgInfoMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/SiqMsgInfoMapper.xml new file mode 100644 index 00000000..356b3b29 --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/SiqMsgInfoMapper.xml @@ -0,0 +1,6 @@ + + + +