@ -26,18 +26,14 @@
package com.yxt.anrui.base.biz.baseoutsourcingapplication ;
import cn.hutool.core.bean.BeanUtil ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.thread.ThreadUtil ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
import com.yxt.anrui.base.api.basemanufacturerretware.BaseManufacturerRetwareDto ;
import com.yxt.anrui.base.api.baseoutsourcingapplication.* ;
import com.yxt.anrui.base.api.baseoutsourcingapplicationvehicle.BaseOutsourcingApplicationVehicle ;
import com.yxt.anrui.base.api.baseoutsourcingapplicationvehicle.BaseOutsourcingApplicationVehicleDto ;
import com.yxt.anrui.base.api.baseoutsourcingapplicationvehicle.BaseOutsourcingApplicationVehicleVo ;
import com.yxt.anrui.base.api.basevehicle.BaseVehicleDto ;
import com.yxt.anrui.base.api.commonappendix.CommonAppendix ;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixDto ;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo ;
import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum ;
import com.yxt.anrui.base.api.flow.FlowTaskVo ;
@ -50,13 +46,10 @@ import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto ;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign ;
import com.yxt.anrui.flowable.api.flow.FlowableFeign ;
import com.yxt.anrui.flowable.api.flow.StartProcessDto ;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo ;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign ;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkDto ;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign ;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum ;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkTypeEnum ;
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.dictcommon.DictCommonFeign ;
@ -70,25 +63,27 @@ import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo ;
import com.yxt.anrui.portal.api.sysuser.UserQuery ;
import com.yxt.anrui.portal.config.DictCommonType ;
import com.yxt.anrui.scm.api.scmapplyinboundvehicle.ScmApplyInboundVehicleDto ;
import com.yxt.anrui.scm.api.scmvehicleexamine.ScmEntryVehicleExamineDto ;
import com.yxt.anrui.scm.api.scmvehicleexamine.ScmVehicleExamineFeign ;
import com.yxt.anrui.scm.api.scmvehinspectitem.ScmVehinspectItemDto ;
import com.yxt.anrui.scm.api.scmvehinspectitem.ScmVehinspectItemFeign ;
import com.yxt.common.base.utils.DateUtils ;
import org.apache.commons.lang3.StringUtils ;
import com.yxt.common.base.service.MybatisBaseService ;
import com.yxt.common.base.utils.DateUtils ;
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.MessageFeign ;
import com.yxt.messagecenter.api.message.MessageFlowableDto ;
import com.yxt.messagecenter.api.message.MessageJsonDto ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Service ;
import java.math.BigDecimal ;
import java.text.SimpleDateFormat ;
import java.util.* ;
import java.util.stream.Collectors ;
/ * *
* Project : anrui - base ( 外采管理 ) < br / >
@ -128,6 +123,10 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
private ScmVehicleExamineFeign scmVehicleExamineFeign ;
@Autowired
private ScmVehinspectItemFeign scmVehinspectItemFeign ;
@Autowired
private SysProUrlFeign sysProUrlFeign ;
@Autowired
private MessageFeign messageFeign ;
private QueryWrapper < BaseOutsourcingApplication > createQueryWrapper ( BaseOutsourcingApplicationQuery query ) {
// todo: 这里根据具体业务调整查询条件
@ -365,7 +364,13 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
bv . setOrgSidPath ( orgSidPath ) ;
bv . setBusinessSid ( businessSid ) ;
bv . setUserSid ( dto . getUserSid ( ) ) ;
// variables.put("businessSid", businessSid);
//================添加app参数开始
//若app移动端有此功能,则传递appMap参数
Map < String , Object > appMap = new HashMap < > ( ) ;
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
appMap . put ( "sid" , businessSid ) ;
variables . put ( "app" , appMap ) ;
//=================添加app参数结束
bv . setFormVariables ( variables ) ;
bv . setModelId ( ProcDefEnum . BASEOUTSOURCINGAPPLICATION . getProDefId ( ) ) ;
//如果taskid从业务的数据库中查询出来,那这个taskid 和当前的关系是什么 如果数据库中查询出来的taskid是第四个环节的id,但是目前是做的第一次的提交操作。
@ -375,6 +380,11 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
ResultBean < UpdateFlowFieldVo > resultBean1 = flowableFeign . startProcess ( bv ) ;
UpdateFlowFieldVo uff = resultBean1 . getData ( ) ;
updateFlowFiled ( BeanUtil . beanToMap ( uff ) ) ;
BaseOutsourcingApplication baseOutsourcingApplication = fetchBySid ( businessSid ) ;
//======================添加消息推送开始
//极光推送
String msgSid = getMessage ( uff , appMap , baseOutsourcingApplication ) ;
//======================添加消息推送结束
return resultBean1 ;
}
ResultBean rb = submitBusinessData ( dto , busSid , orgSidPath ) ;
@ -391,7 +401,13 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
bv . setOrgSidPath ( orgSidPath ) ;
bv . setBusinessSid ( businessSid ) ;
bv . setUserSid ( dto . getUserSid ( ) ) ;
// variables.put("businessSid", businessSid);
//================添加app参数开始
//若app移动端有此功能,则传递appMap参数
Map < String , Object > appMap = new HashMap < > ( ) ;
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
appMap . put ( "sid" , businessSid ) ;
variables . put ( "app" , appMap ) ;
//=================添加app参数结束
bv . setFormVariables ( variables ) ;
bv . setModelId ( ProcDefEnum . BASEOUTSOURCINGAPPLICATION . getProDefId ( ) ) ;
if ( StringUtils . isBlank ( businessTaskid ) & & StringUtils . isBlank ( dto . getTaskId ( ) ) ) {
@ -400,14 +416,25 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
ResultBean < UpdateFlowFieldVo > resultBean1 = flowableFeign . startProcess ( bv ) ;
UpdateFlowFieldVo uff = resultBean1 . getData ( ) ;
updateFlowFiled ( BeanUtil . beanToMap ( uff ) ) ;
//======================添加消息推送开始
BaseOutsourcingApplication baseOutsourcingApplication = fetchBySid ( businessSid ) ;
//极光推送
String msgSid = getMessage ( uff , appMap , baseOutsourcingApplication ) ;
//======================添加消息推送结束
return resultBean1 ;
} else if ( StringUtils . isNotBlank ( businessTaskid ) & & businessTaskid . equals ( dto . getTaskId ( ) ) ) { //只有数据一致的时候才能进行下一步
bv . setTaskDefKey ( booad . getTaskDefKey ( ) ) ;
bv . setComment ( StringUtils . isNotBlank ( dto . getComment ( ) ) ? dto . getComment ( ) : "重新提交" ) ;
bv . setInstanceId ( dto . getInstanceId ( ) ) ;
ResultBean < UpdateFlowFieldVo > rb = flowableFeign . handleProsess ( bv ) ;
UpdateFlowFieldVo uff = rb . getData ( ) ;
Map < String , Object > stringObjectMap = BeanUtil . beanToMap ( rb . getData ( ) ) ;
updateFlowFiled ( stringObjectMap ) ;
//======================添加消息推送开始
BaseOutsourcingApplication baseOutsourcingApplication = fetchBySid ( businessSid ) ;
//极光推送
String msgSid = getMessage ( uff , appMap , baseOutsourcingApplication ) ;
//======================添加消息推送结束
return rb ;
} else {
return ResultBean . fireFail ( ) . setMsg ( "操作失败,提交的数据不一致!" ) ;
@ -439,6 +466,11 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
BaseOutsourcingApplication booad = fetchBySid ( bv . getBusinessSid ( ) ) ;
String businessTaskid = booad . getTaskId ( ) ;
if ( businessTaskid . equals ( bv . getTaskId ( ) ) ) { //只有数据一致的时候才能进行下一步
//=================添加app相关参数
Map < String , Object > appMap = new HashMap < > ( ) ;
appMap . put ( "sid" , bv . getBusinessSid ( ) ) ;
bv . getFormVariables ( ) . put ( "app" , appMap ) ;
//================添加app相关参数
ResultBean < UpdateFlowFieldVo > rb = flowableFeign . handleProsess ( bv ) ;
String taskDefKey = rb . getData ( ) . getTaskDefKey ( ) ;
Map < String , Object > stringObjectMap = BeanUtil . beanToMap ( rb . getData ( ) ) ;
@ -468,6 +500,12 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
}
}
}
//======================添加消息推送开始
UpdateFlowFieldVo uff = rb . getData ( ) ;
BaseOutsourcingApplication baseOutsourcingApplication = fetchBySid ( bv . getBusinessSid ( ) ) ;
//极光推送
String msgSid = getMessage ( uff , appMap , baseOutsourcingApplication ) ;
//======================添加消息推送结束
return rb ;
} else {
return ResultBean . fireFail ( ) . setMsg ( "操作失败,提交的数据不一致!" ) ;
@ -597,6 +635,11 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
String businessTaskid = booad . getTaskId ( ) ;
if ( businessTaskid . equals ( flowTaskVo . getTaskId ( ) ) ) { //只有数据一致的时候才能进行下一步
BeanUtil . copyProperties ( flowTaskVo , fl ) ;
//==========添加app相关参数
Map < String , Object > appMap = new HashMap < > ( ) ;
appMap . put ( "sid" , flowTaskVo . getBusinessSid ( ) ) ;
flowTaskVo . getValues ( ) . put ( "app" , appMap ) ;
//=========添加app相关参数
BaseOutsourcingApplicationDto boad = baseMapper . getBySid ( flowTaskVo . getBusinessSid ( ) ) ;
ResultBean < UpdateFlowFieldVo > resultBean = flowableFeign . taskReject ( fl ) ;
UpdateFlowFieldVo data = resultBean . getData ( ) ;
@ -606,6 +649,11 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
stringObjectMap . put ( "procDefId" , boad . getProcDefId ( ) ) ;
stringObjectMap . put ( "nodeState" , data . getNodeState ( ) ) ;
updateFlowFiled ( stringObjectMap ) ;
//======================添加消息推送开始
BaseOutsourcingApplication baseOutsourcingApplication = fetchBySid ( flowTaskVo . getBusinessSid ( ) ) ;
//极光推送
String msgSid = getMessage ( data , appMap , baseOutsourcingApplication ) ;
//======================添加消息推送结束
return resultBean ;
} else {
return ResultBean . fireFail ( ) . setMsg ( "操作失败,提交的数据不一致!" ) ;
@ -686,4 +734,64 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
processCirculationNodesByMap . setSuccess ( true ) ;
return processCirculationNodesByMap ;
}
public ResultBean < AppBaseOutsourcingApplicationVo > getExternalPurchase ( String sid ) {
ResultBean < AppBaseOutsourcingApplicationVo > rb = ResultBean . fireFail ( ) ;
AppBaseOutsourcingApplicationVo vo = baseMapper . getExternalPurchase ( sid ) ;
List < CommonAppendixVo > commonAppendixVos = commonAppendixService . selByLinkSid ( sid ) ;
List < String > stringList = new ArrayList < > ( ) ;
if ( commonAppendixVos ! = null & & commonAppendixVos . size ( ) > 0 ) {
stringList . add ( commonAppendixVos . get ( 0 ) . getFilePath ( ) ) ;
}
vo . setImages ( stringList ) ;
return rb . success ( ) . setData ( vo ) ;
}
/ * *
* 消息推送
* @param ufVo
* @param appMap
* @param baseOutsourcingApplication
* @return
* /
public String getMessage ( UpdateFlowFieldVo ufVo , Map < String , Object > appMap , BaseOutsourcingApplication baseOutsourcingApplication ) {
//=====极光推送信息========================================参数组装
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 . BASEOUTSOURCINGAPPLICATION . getProDefId ( ) , ufVo . getTaskDefKey ( ) , "1" , "2" ) ;
SysProUrlVo sysProUrlVo = selectUrlByKey . getData ( ) ;
messageFlowableDto . setBusinessSid ( baseOutsourcingApplication . 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 ( baseOutsourcingApplication . getCreateByName ( ) ) ;
messageFlowableDto . setTaskId ( ufVo . getTaskId ( ) ) ;
ResultBean < String > stringResultBean = messageFeign . getMessage ( messageFlowableDto ) ;
String msgSid = stringResultBean . getData ( ) ;
return msgSid ;
}
}