|
|
@ -33,6 +33,8 @@ import com.yxt.anrui.flowable.api.flow.FlowableFeign; |
|
|
|
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; |
|
|
|
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; |
|
|
|
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; |
|
|
|
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlFeign; |
|
|
|
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo; |
|
|
|
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; |
|
|
|
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; |
|
|
@ -42,26 +44,21 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
|
|
|
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.core.query.PagerQuery; |
|
|
|
import com.yxt.common.core.result.ResultBean; |
|
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
|
import com.yxt.messagecenter.api.message.AppMessageDto; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFeign; |
|
|
|
import com.yxt.messagecenter.api.messagelist.MessageListDto; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFlowableDto; |
|
|
|
import com.yxt.messagecenter.api.message.MessageJsonDto; |
|
|
|
import com.yxt.messagecenter.api.messagelist.MessageListFeign; |
|
|
|
import com.yxt.messagecenter.api.messagetype.MessageTypeFeign; |
|
|
|
import com.yxt.messagecenter.api.messagetype.MessageTypeVo; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
import java.util.concurrent.Executors; |
|
|
|
import java.util.concurrent.Future; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
@ -110,6 +107,8 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
private MessageFeign messageFeign; |
|
|
|
@Autowired |
|
|
|
private MessageListFeign messageListFeign; |
|
|
|
@Autowired |
|
|
|
private SysProUrlFeign sysProUrlFeign; |
|
|
|
|
|
|
|
/** |
|
|
|
* 分页列表 |
|
|
@ -374,8 +373,8 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
} |
|
|
|
UpdateFlowFieldVo ufVo = voResultBean.getData(); |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(ufVo)); |
|
|
|
//极光推送信息
|
|
|
|
// messageJpush(businessSid, ufVo.getNextNodeUserSids());
|
|
|
|
//极光推送
|
|
|
|
String msgSid = getMessage(ufVo, appMap, busVehicleApply); |
|
|
|
return voResultBean; |
|
|
|
} |
|
|
|
if (r == 2) { |
|
|
@ -392,71 +391,6 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
return rb; |
|
|
|
} |
|
|
|
|
|
|
|
public void messageJpush(String businessSid, String nextSid) { |
|
|
|
BusVehicleApply busVehicleApply = fetchBySid(businessSid); |
|
|
|
List<String> stringList = Arrays.asList(nextSid.split(",")); |
|
|
|
//根据用户的sid查询用户的id
|
|
|
|
ResultBean<String> stringList1 = sysUserFeign.selectIdBySid(stringList); |
|
|
|
List<String> stringList2 = Arrays.asList(stringList1.getData().split(",")); |
|
|
|
//标题、内容、消息类别key、消息类别名称、
|
|
|
|
String msgSid = getMessage(stringList); |
|
|
|
for (int i = 0; i < stringList2.size(); i++) { |
|
|
|
JPushServer.sendPushAlias("排产申请审批", busVehicleApply.getCreateByName() + "的排产申请", "msg_type", "审批中心", stringList2.get(i)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public String getMessage(List<String> list) { |
|
|
|
//1、buttons:int[]{3,4,5}、taskId、taskName、procInsId、taskDefKey
|
|
|
|
//根据taskDefKey、流程标识、以及
|
|
|
|
|
|
|
|
|
|
|
|
// 1、保存消息体
|
|
|
|
AppMessageDto messageDto = new AppMessageDto(); |
|
|
|
ResultBean<List<MessageTypeVo>> messageBean = messageTypeFeign.selectAppMsgTypeList("0002"); |
|
|
|
if (messageBean.getSuccess() && messageBean.getData() != null) { |
|
|
|
List<MessageTypeVo> typeVoList = messageBean.getData(); |
|
|
|
for (MessageTypeVo message : typeVoList) { |
|
|
|
if (message.getMsgType().equals("审批中心")) { |
|
|
|
messageDto.setMsgTypeSid(message.getMsgTypeSid()); |
|
|
|
messageDto.setMsgType(message.getMsgType()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
messageDto.setMsgTitle("排产申请审批"); |
|
|
|
messageDto.setMsgContent("排产申请审批"); |
|
|
|
messageDto.setMsgSource("排产"); |
|
|
|
String msgSid = messageFeign.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); |
|
|
|
messageListFeign.save(messageList); |
|
|
|
System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
futures.add(f); |
|
|
|
} |
|
|
|
executor.shutdown(); |
|
|
|
return msgSid; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 判断提交的流程是否被允许 |
|
|
|
* |
|
|
@ -503,8 +437,12 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
*/ |
|
|
|
public ResultBean complete(BusinessVariables bv) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
BusVehicleApply busVehicleApply = fetchBySid(bv.getBusinessSid()); |
|
|
|
String businessSid = bv.getBusinessSid(); |
|
|
|
BusVehicleApply busVehicleApply = fetchBySid(businessSid); |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
appMap.put("sid", businessSid); |
|
|
|
variables.put("app", appMap); |
|
|
|
//根据业务sid查询排产信息
|
|
|
|
variables.put("money", busVehicleApply.getCurrentAmount().intValue() > 0); |
|
|
|
bv.setFormVariables(variables); |
|
|
@ -513,6 +451,7 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); |
|
|
|
//ToDo:排产申请通过厂家认款推送
|
|
|
|
//查询是否是最后一个环节,若状态为通过,需要打款的推送打款状态为未打款厂家认款记录;无需打款的,直接推送打款状态为无需打款的厂家认款记录。
|
|
|
@ -567,8 +506,8 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
finPaymentrecordDto.setBusSid(r.getData()); |
|
|
|
finPaymentrecordFeign.save(finPaymentrecordDto); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
String msgSid = getMessage(ufVo, appMap, busVehicleApply); |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} else { |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致"); |
|
|
@ -632,11 +571,11 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
*/ |
|
|
|
public ResultBean taskReject(BusVehicleApplyTaskQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
BusVehicleApply busVehicleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
String businessSid = query.getBusinessSid(); |
|
|
|
BusVehicleApply busVehicleApply = fetchBySid(businessSid); |
|
|
|
if (busVehicleApply == null) { |
|
|
|
return rb.setMsg("该申请不存在"); |
|
|
|
} |
|
|
|
|
|
|
|
String businessTaskId = busVehicleApply.getTaskId(); |
|
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
@ -649,6 +588,9 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
appMap.put("sid", businessSid); |
|
|
|
variables.put("app", appMap); |
|
|
|
//根据业务sid查询排产信息
|
|
|
|
variables.put("money", busVehicleApply.getCurrentAmount().intValue() > 0); |
|
|
|
flowTaskVo.setValues(variables); |
|
|
@ -656,9 +598,11 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData()); |
|
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(ufVo); |
|
|
|
//更新业务中的流程相关的参数
|
|
|
|
updateFlowFiled(map); |
|
|
|
String msgSid = getMessage(ufVo, appMap, busVehicleApply); |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
} |
|
|
@ -766,4 +710,53 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa |
|
|
|
vo.setPlateThicknessSize("底 " + vo.getPlateThicknessBottom() + " mm,边 " + vo.getPlateThicknessEdge() + " mm"); |
|
|
|
return rb.success().setData(vo); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 排产申请极光推送-移动端 |
|
|
|
* |
|
|
|
* @param ufVo |
|
|
|
* @param appMap |
|
|
|
* @param busVehicleApply |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public String getMessage(UpdateFlowFieldVo ufVo, Map<String, Object> appMap, BusVehicleApply busVehicleApply) { |
|
|
|
//=====极光推送信息========================================参数组装
|
|
|
|
List<String> receiveSidList = Arrays.asList(ufVo.getNextNodeUserSids().split(",")); |
|
|
|
//根据用户的sid查询用户的id
|
|
|
|
ResultBean<String> stringList1 = sysUserFeign.selectIdBySid(receiveSidList); |
|
|
|
List<String> reveiveIdList = Arrays.asList(stringList1.getData().split(",")); |
|
|
|
MessageFlowableDto messageFlowableDto = new MessageFlowableDto(); |
|
|
|
MessageJsonDto messageJsonDto = new MessageJsonDto(); |
|
|
|
BeanUtil.copyProperties(ufVo, messageJsonDto); |
|
|
|
//查询流程审批的页面操作地址组装json的参数
|
|
|
|
//根据taskDef和移动端标识
|
|
|
|
ResultBean<SysProUrlVo> selectUrlByKey = sysProUrlFeign.selectUrlByKey(ProcDefEnum.VEHICLEAPPLY.getProDefId(), ufVo.getTaskDefKey(), "1", "2"); |
|
|
|
SysProUrlVo sysProUrlVo = selectUrlByKey.getData(); |
|
|
|
messageFlowableDto.setBusinessSid(busVehicleApply.getSid()); |
|
|
|
messageFlowableDto.setApp_type("2"); |
|
|
|
if (sysProUrlVo.getUrl().contains("#")) { |
|
|
|
messageFlowableDto.setModuleAction(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(0)); |
|
|
|
List<Integer> codesInteger = Arrays.asList(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(1).split(",")).stream().map(Integer::parseInt).collect(Collectors.toList()); |
|
|
|
int[] ints = codesInteger.stream().mapToInt(Integer::valueOf).toArray(); |
|
|
|
; |
|
|
|
messageJsonDto.setButtons(ints); |
|
|
|
} else { |
|
|
|
messageFlowableDto.setModuleAction(sysProUrlVo.getUrl()); |
|
|
|
} |
|
|
|
messageFlowableDto.setModuleSid(Arrays.asList(sysProUrlVo.getModulePluginName().split("#")).get(0)); |
|
|
|
messageJsonDto.setTaskName(ufVo.getNodeState()); |
|
|
|
messageJsonDto.setProcInsId(ufVo.getProcInsId()); |
|
|
|
messageJsonDto.setAppMap(appMap); |
|
|
|
messageFlowableDto.setJson(messageJsonDto); |
|
|
|
messageFlowableDto.setList(receiveSidList); |
|
|
|
messageFlowableDto.setReceiveIdList(reveiveIdList); |
|
|
|
messageFlowableDto.setModuleName("排产申请"); |
|
|
|
messageFlowableDto.setMsgContent("排产申请"); |
|
|
|
messageFlowableDto.setMsgTitle("排产申请"); |
|
|
|
messageFlowableDto.setCreateName(busVehicleApply.getCreateByName()); |
|
|
|
ResultBean<String> stringResultBean = messageFeign.getMessage(messageFlowableDto); |
|
|
|
String msgSid = stringResultBean.getData(); |
|
|
|
return msgSid; |
|
|
|
|
|
|
|
} |
|
|
|
} |