Browse Source

销售订单移动端完善+排产申请添加消息

master
dimengzhe 3 years ago
parent
commit
2dae5178ad
  1. 4
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java
  2. 5
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java
  3. 49
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableDto.java
  4. 33
      message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageJsonDto.java
  5. 16
      message-center-api/src/main/java/com/yxt/messagecenter/api/messagelist/MessageListFeign.java
  6. 5
      message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java
  7. 362
      message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java

4
message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeign.java

@ -59,4 +59,8 @@ public interface MessageFeign {
public ResultBean<String> saveOrUpdateAppMessage(@RequestBody AppMessageDto dto); public ResultBean<String> saveOrUpdateAppMessage(@RequestBody AppMessageDto dto);
/**********************************************************************************************/ /**********************************************************************************************/
@ApiOperation("移动端流程审批推送消息")
@PostMapping("/getMessage")
ResultBean<String> getMessage(@RequestBody MessageFlowableDto dto);
} }

5
message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFeignFallback.java

@ -53,4 +53,9 @@ public class MessageFeignFallback implements MessageFeign {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
return rb.setMsg("接口message-center/message/saveOrUpdateAppMessage无法访问"); return rb.setMsg("接口message-center/message/saveOrUpdateAppMessage无法访问");
} }
@Override
public ResultBean<String> getMessage(MessageFlowableDto dto) {
return null;
}
} }

49
message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageFlowableDto.java

@ -0,0 +1,49 @@
package com.yxt.messagecenter.api.message;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/8/12 8:55
* @Description
*/
@Data
public class MessageFlowableDto implements Dto {
private static final long serialVersionUID = 2368293589170415803L;
@ApiModelProperty("接收人的sid集合")
private List<String> list = new ArrayList<>();
@ApiModelProperty("消息标题")
private String msgTitle;
@ApiModelProperty("消息内容")
private String msgContent;
@ApiModelProperty("json组装")
private MessageJsonDto json;
@ApiModelProperty("创建人名称")
private String createName;
@ApiModelProperty("接收人的id集合")
private List<String> receiveIdList;
@ApiModelProperty("模块名称")
private String moduleName;
@ApiModelProperty("具体页面的url")
private String moduleAction;
@ApiModelProperty("业务sid")
private String businessSid;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("插件sid")
private String moduleSid;
}

33
message-center-api/src/main/java/com/yxt/messagecenter/api/message/MessageJsonDto.java

@ -0,0 +1,33 @@
package com.yxt.messagecenter.api.message;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/8/12 10:19
* @Description
*/
@Data
public class MessageJsonDto implements Dto {
private static final long serialVersionUID = -7733499156217768470L;
@ApiModelProperty("移动端页面地址#号后的数字集合")
private int[] buttons = {};
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("节点名称")
private String taskName;
@ApiModelProperty("流程实例id")
private String procInsId;
@ApiModelProperty("节点id")
private String taskDefKey;
@ApiModelProperty("app中特殊参数")
private Map<String, Object> appMap = new HashMap<>();
}

16
message-center-api/src/main/java/com/yxt/messagecenter/api/messagelist/MessageListFeign.java

@ -37,11 +37,11 @@ import java.util.List;
public interface MessageListFeign { public interface MessageListFeign {
@ApiOperation("根据条件分页查询未读消息列表") @ApiOperation("根据条件分页查询未读消息列表")
@PostMapping(value="/noreadListPage") @PostMapping(value = "/noreadListPage")
public ResultBean<PagerVo<MessageListJoinMsgVo>> noreadListPage(@RequestBody PagerQuery<MessageListQuery> pq); public ResultBean<PagerVo<MessageListJoinMsgVo>> noreadListPage(@RequestBody PagerQuery<MessageListQuery> pq);
@ApiOperation("根据条件分页查询已读消息列表") @ApiOperation("根据条件分页查询已读消息列表")
@PostMapping(value="/readListPage") @PostMapping(value = "/readListPage")
public ResultBean<PagerVo<MessageListJoinMsgVo>> readListPage(@RequestBody PagerQuery<MessageListQuery> pq); public ResultBean<PagerVo<MessageListJoinMsgVo>> readListPage(@RequestBody PagerQuery<MessageListQuery> pq);
@ApiOperation("所有数据列表") @ApiOperation("所有数据列表")
@ -60,14 +60,6 @@ public interface MessageListFeign {
@GetMapping("/del/{ids}") @GetMapping("/del/{ids}")
public ResultBean del(@PathVariable("ids") String ids); public ResultBean del(@PathVariable("ids") String ids);
/* @ApiOperation("获取一条记录")
@GetMapping("/fetch/{id}")
public ResultBean<MessageListVo> fetch(@PathVariable("id") String id);
@ApiOperation("获取一条记录")
@GetMapping("/fetchSid/{sid}")
public ResultBean<MessageList> fetchBySid(@PathVariable("sid") String sid);*/
@ApiOperation("获取一条记录") @ApiOperation("获取一条记录")
@GetMapping("/fetchByMsgSid/{sid}") @GetMapping("/fetchByMsgSid/{sid}")
public ResultBean<Message> fetchByMsgSid(@PathVariable("sid") String sid); public ResultBean<Message> fetchByMsgSid(@PathVariable("sid") String sid);
@ -100,7 +92,7 @@ public interface MessageListFeign {
@ApiOperation("获取待阅数量") @ApiOperation("获取待阅数量")
@GetMapping("/selectUnReadCount") @GetMapping("/selectUnReadCount")
public ResultBean<Integer> selectUnReadCount(@RequestParam(value = "msgTypeSid", required = false) String msgTypeSid, public ResultBean<Integer> selectUnReadCount(@RequestParam(value = "msgTypeSid", required = false) String msgTypeSid,
@RequestParam("userSid") String userSid); @RequestParam("userSid") String userSid);
/********************************************************手机端接口*********************************************************/ /********************************************************手机端接口*********************************************************/
@ -114,7 +106,7 @@ public interface MessageListFeign {
@ApiOperation("手机端用户根据消息类型批量设为已读") @ApiOperation("手机端用户根据消息类型批量设为已读")
@PostMapping("/updateAppReadByType") @PostMapping("/updateAppReadByType")
public ResultBean updateAppReadByType(@RequestParam ("msgTypeSid") String msgTypeSid, @RequestParam ("userSid") String userSid); public ResultBean updateAppReadByType(@RequestParam("msgTypeSid") String msgTypeSid, @RequestParam("userSid") String userSid);
/****************************************************************************************************************************/ /****************************************************************************************************************************/
} }

5
message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageRest.java

@ -110,4 +110,9 @@ public class MessageRest implements MessageFeign {
public ResultBean<String> saveOrUpdateAppMessage(AppMessageDto dto) { public ResultBean<String> saveOrUpdateAppMessage(AppMessageDto dto) {
return messageService.saveOrUpdateAppMessage(dto); return messageService.saveOrUpdateAppMessage(dto);
} }
@Override
public ResultBean<String> getMessage(MessageFlowableDto dto) {
return messageService.getMessage(dto);
}
} }

362
message-center-biz/src/main/java/com/yxt/messagecenter/biz/message/MessageService.java

@ -1,19 +1,28 @@
package com.yxt.messagecenter.biz.message; package com.yxt.messagecenter.biz.message;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.JPushServer;
import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.*; import com.yxt.messagecenter.api.message.*;
import com.yxt.messagecenter.api.messagelist.MessageListDto;
import com.yxt.messagecenter.api.messagetype.MessageTypeVo;
import com.yxt.messagecenter.biz.messagelist.MessageListService;
import com.yxt.messagecenter.biz.messagetype.MessageTypeService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.*;
import java.util.UUID; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/** /**
* Project: message-center(消息中心) <br/> * Project: message-center(消息中心) <br/>
@ -30,141 +39,216 @@ import java.util.UUID;
*/ */
@Service @Service
public class MessageService extends MybatisBaseService<MessageMapper, Message> { public class MessageService extends MybatisBaseService<MessageMapper, Message> {
public PagerVo<Message> listPage(PagerQuery<MessageQuery> pq) {
MessageQuery query = pq.getParams(); @Autowired
QueryWrapper<Message> qw = createQueryWrapper(query); private MessageTypeService messageTypeService;
IPage<Message> page = PagerUtil.queryToPage(pq); @Autowired
IPage<Message> pagging = baseMapper.selectPage(page, qw); private MessageListService messageListService;
PagerVo<Message> p = PagerUtil.pageToVo(pagging, null);
return p; public PagerVo<Message> listPage(PagerQuery<MessageQuery> pq) {
} MessageQuery query = pq.getParams();
public List<Message> listAll(MessageQuery query) { QueryWrapper<Message> qw = createQueryWrapper(query);
QueryWrapper<Message> qw = createQueryWrapper(query); IPage<Message> page = PagerUtil.queryToPage(pq);
return baseMapper.selectList(qw); IPage<Message> pagging = baseMapper.selectPage(page, qw);
} PagerVo<Message> p = PagerUtil.pageToVo(pagging, null);
private QueryWrapper<Message> createQueryWrapper(MessageQuery query) { return p;
// todo: 这里根据具体业务调整查询条件 }
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
QueryWrapper<Message> qw = new QueryWrapper<>(); public List<Message> listAll(MessageQuery query) {
QueryWrapper<Message> qw = createQueryWrapper(query);
if (StringUtils.isNotBlank(query.getMsgType())) { return baseMapper.selectList(qw);
qw.eq("msgType", query.getMsgType()); }
}
private QueryWrapper<Message> createQueryWrapper(MessageQuery query) {
if (StringUtils.isNotBlank(query.getMsgTitle())) { // todo: 这里根据具体业务调整查询条件
qw.eq("msgTitle", query.getMsgTitle()); // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
} QueryWrapper<Message> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getMsgContent())) { if (StringUtils.isNotBlank(query.getMsgType())) {
qw.eq("msgContent", query.getMsgContent()); qw.eq("msgType", query.getMsgType());
} }
if (StringUtils.isNotBlank(query.getMsgSource())) { if (StringUtils.isNotBlank(query.getMsgTitle())) {
qw.eq("msgSource", query.getMsgSource()); qw.eq("msgTitle", query.getMsgTitle());
} }
if (StringUtils.isNotBlank(query.getSenderSid())) { if (StringUtils.isNotBlank(query.getMsgContent())) {
qw.eq("senderSid", query.getSenderSid()); qw.eq("msgContent", query.getMsgContent());
} }
if (StringUtils.isNotBlank(query.getSenderName())) { if (StringUtils.isNotBlank(query.getMsgSource())) {
qw.eq("senderName", query.getSenderName()); qw.eq("msgSource", query.getMsgSource());
} }
if (StringUtils.isNotBlank(query.getSenderDeptSid())) { if (StringUtils.isNotBlank(query.getSenderSid())) {
qw.eq("senderDeptSid", query.getSenderDeptSid()); qw.eq("senderSid", query.getSenderSid());
} }
if (StringUtils.isNotBlank(query.getSenderDeptName())) { if (StringUtils.isNotBlank(query.getSenderName())) {
qw.eq("senderDeptName", query.getSenderDeptName()); qw.eq("senderName", query.getSenderName());
} }
if (StringUtils.isNotBlank(query.getBusinessSid())) { if (StringUtils.isNotBlank(query.getSenderDeptSid())) {
qw.eq("businessSid", query.getBusinessSid()); qw.eq("senderDeptSid", query.getSenderDeptSid());
} }
if (StringUtils.isNotBlank(query.getModuleSid())) { if (StringUtils.isNotBlank(query.getSenderDeptName())) {
qw.eq("moduleSid", query.getModuleSid()); qw.eq("senderDeptName", query.getSenderDeptName());
} }
if (StringUtils.isNotBlank(query.getModuleAction())) { if (StringUtils.isNotBlank(query.getBusinessSid())) {
qw.eq("moduleAction", query.getModuleAction()); qw.eq("businessSid", query.getBusinessSid());
} }
if (StringUtils.isNotBlank(query.getArgs_json())) { if (StringUtils.isNotBlank(query.getModuleSid())) {
qw.eq("args_json", query.getArgs_json()); qw.eq("moduleSid", query.getModuleSid());
} }
if (StringUtils.isNotBlank(query.getH5_url())) { if (StringUtils.isNotBlank(query.getModuleAction())) {
qw.eq("h5_url", query.getH5_url()); qw.eq("moduleAction", query.getModuleAction());
} }
if (StringUtils.isNotBlank(query.getXcx_url())) { if (StringUtils.isNotBlank(query.getArgs_json())) {
qw.eq("xcx_url", query.getXcx_url()); qw.eq("args_json", query.getArgs_json());
} }
if (StringUtils.isNotBlank(query.getMsgTargetUri())) { if (StringUtils.isNotBlank(query.getH5_url())) {
qw.eq("msgTargetUri", query.getMsgTargetUri()); qw.eq("h5_url", query.getH5_url());
} }
return qw;
} if (StringUtils.isNotBlank(query.getXcx_url())) {
qw.eq("xcx_url", query.getXcx_url());
public PagerVo<MessageVo> listPageVo(PagerQuery<MessageQuery> pq) { }
MessageQuery query = pq.getParams();
QueryWrapper<Message> qw = createQueryWrapper(query); if (StringUtils.isNotBlank(query.getMsgTargetUri())) {
IPage<Message> page = PagerUtil.queryToPage(pq); qw.eq("msgTargetUri", query.getMsgTargetUri());
IPage<MessageVo> pagging = baseMapper.selectPageVo(page, qw); }
PagerVo<MessageVo> p = PagerUtil.pageToVo(pagging, null); return qw;
return p; }
}
public PagerVo<MessageVo> listPageVo(PagerQuery<MessageQuery> pq) {
public List<MessageVo> listAllVo(MessageQuery query) { MessageQuery query = pq.getParams();
QueryWrapper<Message> qw = createQueryWrapper(query); QueryWrapper<Message> qw = createQueryWrapper(query);
return baseMapper.selectListAllVo(qw); IPage<Message> page = PagerUtil.queryToPage(pq);
} IPage<MessageVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<MessageVo> p = PagerUtil.pageToVo(pagging, null);
public List<MessageVo> listVo() { return p;
return baseMapper.selectListVo(); }
}
public List<MessageVo> listAllVo(MessageQuery query) {
public void saveOrUpdateDto(MessageDto dto){ QueryWrapper<Message> qw = createQueryWrapper(query);
Message entity = new Message(); return baseMapper.selectListAllVo(qw);
dto.fillEntity(entity); }
this.saveOrUpdate(entity);
} public List<MessageVo> listVo() {
return baseMapper.selectListVo();
public MessageVo fetchByIdVo(String id){ }
Message entity = this.fetchById(id);
MessageVo vo = new MessageVo(); public void saveOrUpdateDto(MessageDto dto) {
BeanUtil.copyProperties(entity, vo); Message entity = new Message();
return vo; dto.fillEntity(entity);
} this.saveOrUpdate(entity);
}
/**
* 手机端保存/修改消息体 public MessageVo fetchByIdVo(String id) {
* @param dto Message entity = this.fetchById(id);
* @return MessageVo vo = new MessageVo();
*/ BeanUtil.copyProperties(entity, vo);
public ResultBean<String> saveOrUpdateAppMessage(AppMessageDto dto) { return vo;
if (StringUtils.isBlank(dto.getSid())) { // 新增 }
Message message = new Message();
dto.fillEntity(message); /**
message.setSid(UUID.randomUUID().toString()); * 手机端保存/修改消息体
Boolean flag = save(message); *
if (flag) { * @param dto
return new ResultBean().success().setMsg("保存成功").setData(message.getSid()); * @return
} else { */
return new ResultBean().fail().setMsg("保存失败"); public ResultBean<String> saveOrUpdateAppMessage(AppMessageDto dto) {
} if (StringUtils.isBlank(dto.getSid())) { // 新增
} else { // 修改 Message message = new Message();
Message message = fetchBySid(dto.getSid()); dto.fillEntity(message);
BeanUtil.copyProperties(dto, message); message.setSid(UUID.randomUUID().toString());
Boolean flag = updateById(message); Boolean flag = save(message);
if (flag) { if (flag) {
return new ResultBean().success().setMsg("修改成功").setData(message.getSid()); return new ResultBean().success().setMsg("保存成功").setData(message.getSid());
} else { } else {
return new ResultBean().fail().setMsg("修改失败"); return new ResultBean().fail().setMsg("保存失败");
} }
} } else { // 修改
} Message message = fetchBySid(dto.getSid());
BeanUtil.copyProperties(dto, message);
Boolean flag = updateById(message);
if (flag) {
return new ResultBean().success().setMsg("修改成功").setData(message.getSid());
} else {
return new ResultBean().fail().setMsg("修改失败");
}
}
}
public ResultBean<String> getMessage(MessageFlowableDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String msgTitle = dto.getMsgTitle();
String msgContent = dto.getMsgContent();
List<String> list = dto.getList();
List<String> receiveIdList = dto.getReceiveIdList();
// 1、保存消息体
AppMessageDto messageDto = new AppMessageDto();
List<MessageTypeVo> messageBean = messageTypeService.selectMsgTypeList("0002");
messageBean.removeAll(Collections.singleton(null));
if (!messageBean.isEmpty()) {
for (MessageTypeVo message : messageBean) {
if (message.getMsgType().equals("审批中心")) {
messageDto.setMsgTypeSid(message.getMsgTypeSid());
messageDto.setMsgType(message.getMsgType());
}
}
}
messageDto.setMsgTitle(msgTitle);
messageDto.setMsgContent(msgContent);
messageDto.setMsgSource("审批中心");
messageDto.setApp_type(dto.getApp_type());
messageDto.setModuleSid(dto.getModuleSid());
//将json与appMap中的参数融合
Map<String, Object> jsonMap = BeanUtil.beanToMap(dto.getJson());
jsonMap.putAll(dto.getJson().getAppMap());
messageDto.setArgs_json(JSONObject.toJSONString(jsonMap));
messageDto.setMsgTargetUri(dto.getModuleAction());
String msgSid = saveOrUpdateAppMessage(messageDto).getData();
String msgTypeSid = messageDto.getMsgTypeSid();
// 2、保存至消息列表
// 使用多线程保存
List<Future<?>> futures = new ArrayList<Future<?>>();
ExecutorService executor = Executors.newFixedThreadPool(4);
for (String receverSid : list) {
Future<?> f = executor.submit(new Runnable() {
@Override
public void run() {
try {
System.out.println("run start-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName());
MessageListDto messageList = new MessageListDto();
messageList.setMsgSid(msgSid);
messageList.setRDelStatus(0);
messageList.setSDelStatus(0);
messageList.setReceiverSid(receverSid);
messageListService.saveOrUpdateDto(messageList);
System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName());
} catch (Exception e) {
e.printStackTrace();
}
}
});
futures.add(f);
}
executor.shutdown();
//标题、内容、消息类别key、消息类别名称、
for (int i = 0; i < receiveIdList.size(); i++) {
/**
* msgTitle:排产申请
* content:xxx的排产申请
*/
JPushServer.sendPushAlias(msgTitle, dto.getCreateName() + "的" + dto.getModuleName(), msgTypeSid, "审批中心", receiveIdList.get(i));
}
return rb.success().setData(msgSid);
}
} }
Loading…
Cancel
Save