|
|
@ -1,34 +1,65 @@ |
|
|
|
package com.yxt.anrui.buscenter.biz.busarrearscarryvehicleapply; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.yxt.anrui.base.api.basevehicle.BaseVehicle; |
|
|
|
import com.yxt.anrui.base.api.basevehicle.BaseVehicleFeign; |
|
|
|
import com.yxt.anrui.base.api.commonappendix.CommonAppendixDto; |
|
|
|
import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign; |
|
|
|
import com.yxt.anrui.base.api.commoncontract.CommonContractFeign; |
|
|
|
import com.yxt.anrui.base.api.commoncontract.CommonContractVo; |
|
|
|
import com.yxt.anrui.buscenter.api.busadvanceginvoiceapply.AppAdvanceInvoiceInfoVo; |
|
|
|
import com.yxt.anrui.buscenter.api.busadvanceginvoiceapply.BusAdvanceGinvoiceapply; |
|
|
|
import com.yxt.anrui.buscenter.api.busadvanceginvoiceapply.flowable.AppCompleteAdvanceInvoiceDto; |
|
|
|
import com.yxt.anrui.buscenter.api.busadvanceginvoiceapply.flowable.AppSubmitAdvanceInvoiceDto; |
|
|
|
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.*; |
|
|
|
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.flowable.*; |
|
|
|
import com.yxt.anrui.buscenter.api.busarrearscarryvehicledetails.BusArrearsCarryVehicleDetails; |
|
|
|
import com.yxt.anrui.buscenter.api.busarrearscarryvehicledetails.BusArrearsCarryVehicleDetailsDto; |
|
|
|
import com.yxt.anrui.buscenter.api.busarrearscarryvehicledetails.BusArrearsCarryVehicleDetailsVo; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.contract.AppRovalContractPageVo; |
|
|
|
import com.yxt.anrui.buscenter.biz.busarrearscarryvehicledetails.BusArrearsCarryVehicleDetailsService; |
|
|
|
import com.yxt.anrui.buscenter.biz.bussalesorder.BusSalesOrderService; |
|
|
|
import com.yxt.anrui.buscenter.biz.flow.FlowableService; |
|
|
|
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; |
|
|
|
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; |
|
|
|
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.flowtask.LatestTaskVo; |
|
|
|
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkDto; |
|
|
|
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign; |
|
|
|
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkTypeEnum; |
|
|
|
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; |
|
|
|
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; |
|
|
|
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; |
|
|
|
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.anrui.portal.api.sysuser.UserQuery; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.UserRoleQuery; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
|
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.*; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
|
* Project: bus(bus) <br/> |
|
|
@ -58,6 +89,9 @@ public class BusArrearsCarryVehicleApplyService extends MybatisBaseService<BusAr |
|
|
|
@Autowired |
|
|
|
private SysStaffOrgFeign sysStaffOrgFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private SysOrganizationFeign sysOrganizationFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private CommonAppendixFeign commonAppendixFeign; |
|
|
|
|
|
|
@ -67,6 +101,26 @@ public class BusArrearsCarryVehicleApplyService extends MybatisBaseService<BusAr |
|
|
|
@Autowired |
|
|
|
private BusArrearsCarryVehicleDetailsService busArrearsCarryVehicleDetailsService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private CommonContractFeign commonContractFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private CrmCustomerTempFeign crmCustomerTempFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private BaseVehicleFeign baseVehicleFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private BusSalesOrderService busSalesOrderService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private MessageFeign messageFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private FlowableFeign flowableFeign; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private FlowTaskFeign flowTaskFeign; |
|
|
|
|
|
|
|
/** |
|
|
|
* 欠款提车分页列表查询条件 |
|
|
@ -373,8 +427,9 @@ public class BusArrearsCarryVehicleApplyService extends MybatisBaseService<BusAr |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean deleteArrearsTakeCar(String contractSid) { |
|
|
|
public ResultBean deleteArrearsTakeCar(AppAdvanceArrearsInfoQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String contractSid = query.getContractSid(); |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(contractSid); |
|
|
|
if (StringUtils.isNotBlank(busArrearsCarryVehicleApply.getNodeState())) { |
|
|
|
return rb.setMsg("该申请已提交,删除失败"); |
|
|
@ -394,4 +449,529 @@ public class BusArrearsCarryVehicleApplyService extends MybatisBaseService<BusAr |
|
|
|
IPage<AppArrearsCarryVehiclePageVo> iPage = baseMapper.getAdvanceInvoiceList(page, qw, params.getName()); |
|
|
|
return iPage; |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean<AppArrearsCarryInfoVo> initArrearsApply(AppAdvanceArrearsInfoQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String contractSid = query.getContractSid(); |
|
|
|
List<AdCarListVo> carList = new ArrayList<>(); |
|
|
|
List<AdCarListVo> vinList = new ArrayList<>(); |
|
|
|
AppArrearsCarryInfoVo vo = new AppArrearsCarryInfoVo(); |
|
|
|
//根据申请sid查询
|
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(contractSid); |
|
|
|
BeanUtil.copyProperties(busArrearsCarryVehicleApply, vo, "sid"); |
|
|
|
vo.setUserSid(busArrearsCarryVehicleApply.getCreateBySid()); // 返回创建人sid
|
|
|
|
vo.setContractSid(contractSid);//返回申请sid
|
|
|
|
//根据申请sid查询车辆数据
|
|
|
|
List<BusArrearsCarryVehicleDetailsVo> carLists = busArrearsCarryVehicleDetailsService.selByArrearsSid(contractSid); |
|
|
|
if (carLists.size() > 0) { |
|
|
|
for (BusArrearsCarryVehicleDetailsVo carryVehicleDetailsVo : carLists) { |
|
|
|
AdCarListVo adCarListVo = new AdCarListVo(); |
|
|
|
adCarListVo.setPrice(String.valueOf(carryVehicleDetailsVo.getDealMoney())); //成交价
|
|
|
|
adCarListVo.setVin(carryVehicleDetailsVo.getVinNo());//车架号
|
|
|
|
adCarListVo.setRemarks(carryVehicleDetailsVo.getRemarks());//备注
|
|
|
|
carList.add(adCarListVo); |
|
|
|
} |
|
|
|
} |
|
|
|
vo.setCarList(carList); |
|
|
|
List<AppRovalContractPageVo> vinLists = busSalesOrderService.selectByContractNo(busArrearsCarryVehicleApply.getContractNo()); |
|
|
|
if (carLists.size() > 0) { |
|
|
|
for (AppRovalContractPageVo appRovalContractPageVo : vinLists) { |
|
|
|
AdCarListVo adCarListVo = new AdCarListVo(); |
|
|
|
adCarListVo.setVin(appRovalContractPageVo.getVin()); |
|
|
|
CommonContractVo commonContractVo = commonContractFeign.getContractBySalesOrderSid(appRovalContractPageVo.getBusSid()).getData(); |
|
|
|
if (commonContractVo != null) { |
|
|
|
adCarListVo.setPrice(commonContractVo.getPrice()); |
|
|
|
} |
|
|
|
vinList.add(adCarListVo); |
|
|
|
} |
|
|
|
} |
|
|
|
vo.setVinList(vinList); |
|
|
|
return rb.success().setData(vo); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 移动端-新增欠款提车申请 |
|
|
|
* |
|
|
|
* @param dto |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public ResultBean addArrearsApply(AppArrearsCarryVinDto dto) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
// 取出分公司sid
|
|
|
|
String useOrgSid = sysStaffOrgFeign.getPathSidByUserSid(dto.getUserSid()).getData(); |
|
|
|
// 取出分公司名称
|
|
|
|
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); |
|
|
|
// 取出当前登录用户信息
|
|
|
|
SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); |
|
|
|
// 时间转换
|
|
|
|
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
String price = ""; |
|
|
|
String modelName = ""; |
|
|
|
String modelSid = ""; |
|
|
|
String customerName = ""; |
|
|
|
String contractNo = ""; |
|
|
|
String contractAmount = ""; |
|
|
|
if (StringUtils.isNotBlank(dto.getContractSid())) { |
|
|
|
// 根据合同Sid取出 合同编号 车型名称 车型sid
|
|
|
|
CommonContractVo commonContractVo = commonContractFeign.fetchBySid(dto.getContractSid()).getData(); |
|
|
|
if (commonContractVo != null) { |
|
|
|
// 根据客户sid取出 客户名称
|
|
|
|
CrmCustomerTempVo crmCustomerTempVo = crmCustomerTempFeign.fetchSid(commonContractVo.getCustomerSid()).getData(); |
|
|
|
if (crmCustomerTempVo != null) { |
|
|
|
customerName = crmCustomerTempVo.getName(); |
|
|
|
} |
|
|
|
price = commonContractVo.getPrice(); |
|
|
|
contractNo = commonContractVo.getContractNo(); |
|
|
|
modelName = commonContractVo.getModelName(); |
|
|
|
modelSid = commonContractVo.getModelSid(); |
|
|
|
contractAmount = commonContractVo.getContractAmount(); |
|
|
|
} |
|
|
|
} |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = new BusArrearsCarryVehicleApply(); |
|
|
|
busArrearsCarryVehicleApply.setCreateBySid(dto.getUserSid());//创建人sid
|
|
|
|
busArrearsCarryVehicleApply.setApplyName(sysUserVo.getName());//申请人
|
|
|
|
busArrearsCarryVehicleApply.setApplyDate(sf.format(new Date()));//申请日期
|
|
|
|
busArrearsCarryVehicleApply.setUseOrgSid(useOrgSid);//分公司sid
|
|
|
|
busArrearsCarryVehicleApply.setUseOrgName(sysOrganizationVo.getName());//分公司名称
|
|
|
|
busArrearsCarryVehicleApply.setModelSid(modelSid);// 车型sid
|
|
|
|
busArrearsCarryVehicleApply.setModelName(modelName);// 车型名称
|
|
|
|
busArrearsCarryVehicleApply.setCustomerName(customerName);// 客户名称
|
|
|
|
busArrearsCarryVehicleApply.setContractNo(contractNo);// 合同编号
|
|
|
|
busArrearsCarryVehicleApply.setContractMoney(new BigDecimal(contractAmount));//合同总金额
|
|
|
|
// busArrearsCarryVehicleApply.setContractCollectionMoney(new BigDecimal());//合同收款金额
|
|
|
|
// busArrearsCarryVehicleApply.setArrearsMoney();//欠款金额
|
|
|
|
// 添加欠款提车 车辆表数据
|
|
|
|
if (dto.getVinList().size() > 0) { |
|
|
|
List<String> vinList = dto.getVinList(); |
|
|
|
for (String vinNo : vinList) { |
|
|
|
BusArrearsCarryVehicleDetails busArrearsCarryVehicle = new BusArrearsCarryVehicleDetails(); |
|
|
|
busArrearsCarryVehicle.setArrearsVehicleSid(busArrearsCarryVehicleApply.getSid()); // 申请表sid
|
|
|
|
busArrearsCarryVehicle.setVinNo(vinNo); // 车架号
|
|
|
|
//获取车辆sid
|
|
|
|
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(vinNo, useOrgSid).getData(); |
|
|
|
if (baseVehicle != null) { |
|
|
|
busArrearsCarryVehicle.setVehicleSid(baseVehicle.getSid()); |
|
|
|
} |
|
|
|
//成交价
|
|
|
|
busArrearsCarryVehicle.setDealMoney(new BigDecimal(price)); |
|
|
|
busArrearsCarryVehicleDetailsService.save(busArrearsCarryVehicle); |
|
|
|
} |
|
|
|
} |
|
|
|
save(busArrearsCarryVehicleApply); |
|
|
|
return rb.success().setData(busArrearsCarryVehicleApply.getSid()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 移动端-保存欠款提车申请 |
|
|
|
* |
|
|
|
* @param dto |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public ResultBean saveArrearsApply(AppArrearsCarryDto dto) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
// 取出分公司sid
|
|
|
|
String useOrgSid = sysStaffOrgFeign.getPathSidByUserSid(dto.getUserSid()).getData(); |
|
|
|
// 取出当前登录用户信息
|
|
|
|
SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData(); |
|
|
|
//根据申请sid查询数据
|
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(dto.getContractSid()); |
|
|
|
BeanUtil.copyProperties(dto, busArrearsCarryVehicleApply); |
|
|
|
//根据欠款提车Sid删除车辆信息 并重新添加
|
|
|
|
busArrearsCarryVehicleDetailsService.deleteByArrearsVehicleSid(dto.getContractSid()); |
|
|
|
// 添加欠款提车 车辆表数据
|
|
|
|
if (dto.getCarList().size() > 0) { |
|
|
|
List<AdCarListDto> carList = dto.getCarList(); |
|
|
|
for (AdCarListDto adCarListDto : carList) { |
|
|
|
BusArrearsCarryVehicleDetails busArrearsCarryVehicle = new BusArrearsCarryVehicleDetails(); |
|
|
|
busArrearsCarryVehicle.setArrearsVehicleSid(busArrearsCarryVehicleApply.getSid()); // 申请表sid
|
|
|
|
busArrearsCarryVehicle.setVinNo(adCarListDto.getVin()); // 车架号
|
|
|
|
//获取车辆sid
|
|
|
|
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(adCarListDto.getVin(), useOrgSid).getData(); |
|
|
|
if (baseVehicle != null) { |
|
|
|
busArrearsCarryVehicle.setVehicleSid(baseVehicle.getSid()); |
|
|
|
} |
|
|
|
//成交价
|
|
|
|
busArrearsCarryVehicle.setDealMoney(new BigDecimal(adCarListDto.getPrice())); |
|
|
|
busArrearsCarryVehicle.setRemarks(adCarListDto.getRemarks());// 备注
|
|
|
|
busArrearsCarryVehicleDetailsService.save(busArrearsCarryVehicle); |
|
|
|
} |
|
|
|
} |
|
|
|
//修改欠款提车申请
|
|
|
|
updateById(busArrearsCarryVehicleApply); |
|
|
|
return rb.success().setData(busArrearsCarryVehicleApply.getSid()); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean submitAdvanceArrearsInfo(AppSubmitAdvanceArrearsDto dto) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
//根据用户sid获取staffSid
|
|
|
|
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid()); |
|
|
|
if (!userVoResultBean.getSuccess()) { |
|
|
|
return rb.setMsg(userVoResultBean.getMsg()); |
|
|
|
} |
|
|
|
//根据staffSid获取用户的组织全路径
|
|
|
|
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid()); |
|
|
|
if (!staffOrgResultBean.getSuccess()) { |
|
|
|
return rb.setMsg(staffOrgResultBean.getMsg()); |
|
|
|
} |
|
|
|
//用户的组织全路径
|
|
|
|
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(dto.getContractSid()); |
|
|
|
int r = submitBusinessData(dto, busArrearsCarryVehicleApply); |
|
|
|
if (r == 3) { |
|
|
|
return rb.setMsg("该申请不存在"); |
|
|
|
} |
|
|
|
if (r == 0) { |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致"); |
|
|
|
} |
|
|
|
//新增修改保存
|
|
|
|
ResultBean<String> resultBean = saveArrearsApply(dto); |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
String businessSid = resultBean.getData(); |
|
|
|
//创建BusinessVariables实体对象
|
|
|
|
BusinessVariables bv = new BusinessVariables(); |
|
|
|
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
|
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
//用户的部门全路径sid
|
|
|
|
bv.setOrgSidPath(orgSidPath); |
|
|
|
//业务sid
|
|
|
|
bv.setBusinessSid(businessSid); |
|
|
|
//用户sid
|
|
|
|
bv.setUserSid(dto.getUserSid()); |
|
|
|
bv.setFormVariables(variables); |
|
|
|
//若app移动端有此功能,则传递appMap参数
|
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
|
|
|
|
appMap.put("contractSid", businessSid); |
|
|
|
variables.put("app", appMap); |
|
|
|
//流程定义id
|
|
|
|
bv.setModelId(ProcDefEnum.ARREARSCARRYVEHICLE.getProDefId()); |
|
|
|
if (r == 1) { |
|
|
|
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv); |
|
|
|
UpdateFlowFieldVo ufVo = voResultBean.getData(); |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(ufVo)); |
|
|
|
//极光推送
|
|
|
|
busArrearsCarryVehicleApply = fetchBySid(businessSid); |
|
|
|
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); |
|
|
|
MessageFlowVo messageFlowVo = new MessageFlowVo(); |
|
|
|
BeanUtil.copyProperties(ufVo, messageFlowVo); |
|
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
|
messageFlowableQuery.setAppMap(appMap); |
|
|
|
messageFlowableQuery.setBusinessSid(businessSid); |
|
|
|
messageFlowableQuery.setModuleName("欠款提车申请"); |
|
|
|
messageFlowableQuery.setMsgContent(busArrearsCarryVehicleApply.getApplyName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); |
|
|
|
messageFlowableQuery.setMsgTitle("欠款提车申请"); |
|
|
|
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery); |
|
|
|
return voResultBean; |
|
|
|
} |
|
|
|
if (r == 2) { |
|
|
|
// ToDo:驳回到发起人后再次提交
|
|
|
|
if (StringUtils.isBlank(dto.getInstanceId())) { |
|
|
|
return rb.setMsg("参数错误:instanceId"); |
|
|
|
} |
|
|
|
bv.setTaskId(busArrearsCarryVehicleApply.getTaskId()); |
|
|
|
bv.setTaskDefKey(busArrearsCarryVehicleApply.getNodeId()); |
|
|
|
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); |
|
|
|
bv.setInstanceId(dto.getInstanceId()); |
|
|
|
// return complete(bv);
|
|
|
|
} |
|
|
|
return rb; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 判断提交的流程是否被允许 |
|
|
|
* |
|
|
|
* @param dto |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private synchronized int submitBusinessData(AppSubmitAdvanceArrearsDto dto, BusArrearsCarryVehicleApply busArrearsCarryVehicleApply) { |
|
|
|
int r = 0; |
|
|
|
if (StringUtils.isBlank(dto.getContractSid())) { |
|
|
|
r = 1; |
|
|
|
} else { |
|
|
|
if (busArrearsCarryVehicleApply != null) { |
|
|
|
String businessTaskId = busArrearsCarryVehicleApply.getTaskId(); |
|
|
|
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { |
|
|
|
//新提交
|
|
|
|
r = 1; |
|
|
|
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { |
|
|
|
//二次提交//只有数据一致的时候才能进行下一步
|
|
|
|
r = 2; |
|
|
|
} |
|
|
|
} else { |
|
|
|
r = 3; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return r; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 更新流程相关的状态 |
|
|
|
* |
|
|
|
* @param map |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private int updateFlowFiled(Map<String, Object> map) { |
|
|
|
return baseMapper.updateFlowFiled(map); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean complete(BusinessVariables bv) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
SysUserVo sysUserVo = sysUserFeign.fetchBySid(bv.getUserSid()).getData(); |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(bv.getBusinessSid()); |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
appMap.put("contractSid", bv.getBusinessSid()); |
|
|
|
variables.put("app", appMap); |
|
|
|
bv.setFormVariables(variables); |
|
|
|
if (bv.getTaskId().equals(busArrearsCarryVehicleApply.getTaskId())) { |
|
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv); |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); |
|
|
|
if (!"Event_end".equals(ufVo.getTaskDefKey())) { |
|
|
|
//极光推送
|
|
|
|
busArrearsCarryVehicleApply = fetchBySid(bv.getBusinessSid()); |
|
|
|
ufVo.setProcInsId(busArrearsCarryVehicleApply.getProcInstId()); |
|
|
|
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); |
|
|
|
MessageFlowVo messageFlowVo = new MessageFlowVo(); |
|
|
|
BeanUtil.copyProperties(ufVo, messageFlowVo); |
|
|
|
ufVo.setProcInsId(busArrearsCarryVehicleApply.getProcInstId()); |
|
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
|
messageFlowableQuery.setAppMap(appMap); |
|
|
|
messageFlowableQuery.setBusinessSid(bv.getBusinessSid()); |
|
|
|
messageFlowableQuery.setModuleName("欠款提车申请"); |
|
|
|
messageFlowableQuery.setMsgContent(busArrearsCarryVehicleApply.getApplyName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); |
|
|
|
messageFlowableQuery.setMsgTitle("欠款提车申请"); |
|
|
|
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery); |
|
|
|
} else { |
|
|
|
AppScmMessageFlowableQuery query = new AppScmMessageFlowableQuery(); |
|
|
|
Map<String, Object> appMaps = new HashMap<>(); |
|
|
|
appMaps.put("contractSid", busArrearsCarryVehicleApply.getSid()); |
|
|
|
List<String> recipientSidList = new ArrayList<>(); |
|
|
|
|
|
|
|
// 风控中心总经理角色用户
|
|
|
|
UserRoleQuery userRoleQuery = new UserRoleQuery(); |
|
|
|
userRoleQuery.setRoleSid("537bea8f-75e8-430c-9a5f-3140bda41f39"); |
|
|
|
List<SysUserVo> list1 = sysUserFeign.getOtherOrgRoleUser(userRoleQuery).getData(); |
|
|
|
for (SysUserVo userVo : list1) { |
|
|
|
recipientSidList.add(userVo.getSid()); |
|
|
|
} |
|
|
|
// 分公司会计角色用户
|
|
|
|
UserQuery userQuery = new UserQuery(); |
|
|
|
userQuery.setRoleSid("94e3e298-e934-42d2-af02-50e93eee583a"); |
|
|
|
userQuery.setOrgSidPath(bv.getOrgSidPath()); |
|
|
|
List<SysUserVo> list = sysUserFeign.getUserByRole(userQuery).getData(); |
|
|
|
for (SysUserVo userVo : list) { |
|
|
|
recipientSidList.add(userVo.getSid()); |
|
|
|
} |
|
|
|
//财务中心总经理角色用户
|
|
|
|
UserRoleQuery userRoleQuery3 = new UserRoleQuery(); |
|
|
|
userRoleQuery3.setRoleSid("b2bcdfd6-ac51-408c-9c7a-7e9818d23155"); |
|
|
|
List<SysUserVo> list3 = sysUserFeign.getOtherOrgRoleUser(userRoleQuery3).getData(); |
|
|
|
for (SysUserVo userVo : list3) { |
|
|
|
recipientSidList.add(userVo.getSid()); |
|
|
|
} |
|
|
|
//事业部运营经理角色用户
|
|
|
|
UserRoleQuery userRoleQuery2 = new UserRoleQuery(); |
|
|
|
userRoleQuery2.setRoleSid("f60b30b0-c7ad-4533-8367-b3ff95cbe725"); |
|
|
|
List<SysUserVo> list2 = sysUserFeign.getOtherOrgRoleUser(userRoleQuery2).getData(); |
|
|
|
for (SysUserVo userVo : list2) { |
|
|
|
recipientSidList.add(userVo.getSid()); |
|
|
|
} |
|
|
|
query.setRecipientSidList(recipientSidList); |
|
|
|
query.setAppMap(appMaps); |
|
|
|
query.setMsgTitle("业务"); |
|
|
|
query.setMsgContent(sysUserVo.getName() + "提交的欠款提车申请,请查阅"); |
|
|
|
query.setMsgSource("业务"); |
|
|
|
query.setMsgTargetUri(MsgTargetUriEnum.TQKPSQTS.getUri()); |
|
|
|
query.setApp_type("2"); |
|
|
|
query.setModuleSid("e25e13b5-f2ed-421f-bdb3-6f2eca2a3028"); |
|
|
|
query.setName("业务"); |
|
|
|
// 消息推送
|
|
|
|
messageFeign.sendAutoserviceMessage(query); |
|
|
|
} |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} else { |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean InitiatorToAnswerInfo(BusinessVariables bv) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(bv.getBusinessSid()); |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
appMap.put("contractSid", bv.getBusinessSid()); |
|
|
|
variables.put("app", appMap); |
|
|
|
bv.setFormVariables(variables); |
|
|
|
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); |
|
|
|
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
|
|
|
|
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList()); |
|
|
|
List<String> candidateGroups = voList.get(0).getCandidateGroups(); |
|
|
|
UserRoleQuery userRoleQuery = new UserRoleQuery(); |
|
|
|
userRoleQuery.setRoleSid(candidateGroups.get(0)); |
|
|
|
List<SysUserVo> sysUserVos = sysUserFeign.getOtherOrgRoleUser(userRoleQuery).getData(); |
|
|
|
StringBuilder nextNodeUserSids = new StringBuilder(); |
|
|
|
if (sysUserVos.size() > 0) { |
|
|
|
for (SysUserVo sysUserVo : sysUserVos) { |
|
|
|
String sid = sysUserVo.getSid(); |
|
|
|
nextNodeUserSids.append(sid).append(","); |
|
|
|
} |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(nextNodeUserSids)) { |
|
|
|
return rb.setMsg("下一环节暂无操作人员"); |
|
|
|
} |
|
|
|
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(",")); |
|
|
|
bv.setNextNodeUserSids(substring); |
|
|
|
if (bv.getTaskId().equals(busArrearsCarryVehicleApply.getTaskId())) { |
|
|
|
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.handleProsess(bv); |
|
|
|
if (!resultBean1.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean1.getMsg()); |
|
|
|
} |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(resultBean1.getData())); |
|
|
|
return rb.success().setData(resultBean1.getData()); |
|
|
|
} else { |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) { |
|
|
|
ResultBean<List<GetNodeVo>> rb = new ResultBean<>(); |
|
|
|
BusinessVariables bv = new BusinessVariables(); |
|
|
|
BeanUtil.copyProperties(query, bv); |
|
|
|
// Map<String, Object> formVariables = query.getFormVariables();
|
|
|
|
//判断流程分支
|
|
|
|
// Map<String, Object> map = IsTrue(formVariables.get("businessSid"));
|
|
|
|
// bv.setFormVariables(map);
|
|
|
|
bv.setModelId(ProcDefEnum.ARREARSCARRYVEHICLE.getProDefId()); |
|
|
|
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); |
|
|
|
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
|
|
|
|
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList()); |
|
|
|
return rb.success().setData(voList); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) { |
|
|
|
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail(); |
|
|
|
BusinessVariables bv = new BusinessVariables(); |
|
|
|
BeanUtil.copyProperties(query, bv); |
|
|
|
// Map<String, Object> formVariables = query.getFormVariables();
|
|
|
|
//判断流程分支
|
|
|
|
// Map<String, Object> map = IsTrue(formVariables.get("businessSid"));
|
|
|
|
// bv.setFormVariables(map);
|
|
|
|
bv.setModelId(ProcDefEnum.ARREARSCARRYVEHICLE.getProDefId()); |
|
|
|
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); |
|
|
|
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
|
|
|
|
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList()); |
|
|
|
return rb.success().setData(voList); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean taskReject(AppAdvanceArrearsTaskQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
if (StringUtils.isBlank(query.getComment())) { |
|
|
|
return rb.setMsg("意见不能为空"); |
|
|
|
} |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
if (busArrearsCarryVehicleApply == null) { |
|
|
|
return rb.setMsg("该申请不存在"); |
|
|
|
} |
|
|
|
String businessTaskId = busArrearsCarryVehicleApply.getTaskId(); |
|
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
|
Map<String, Object> variables = new HashMap<>(); |
|
|
|
Map<String, Object> appMap = new HashMap<>(); |
|
|
|
appMap.put("contractSid", query.getBusinessSid()); |
|
|
|
variables.put("app", appMap); |
|
|
|
flowTaskVo.setValues(variables); |
|
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo); |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
UpdateFlowFieldVo ufVo = resultBean.getData(); |
|
|
|
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData()); |
|
|
|
//更新业务中的流程相关的参数
|
|
|
|
updateFlowFiled(map); |
|
|
|
busArrearsCarryVehicleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); |
|
|
|
MessageFlowVo messageFlowVo = new MessageFlowVo(); |
|
|
|
BeanUtil.copyProperties(ufVo, messageFlowVo); |
|
|
|
String procId = busArrearsCarryVehicleApply.getProcInstId(); |
|
|
|
ufVo.setProcInsId(procId); |
|
|
|
messageFlowableQuery.setUfVo(messageFlowVo); |
|
|
|
messageFlowableQuery.setAppMap(appMap); |
|
|
|
messageFlowableQuery.setBusinessSid(query.getBusinessSid()); |
|
|
|
messageFlowableQuery.setModuleName("提前开票申请"); |
|
|
|
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId); |
|
|
|
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); |
|
|
|
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); |
|
|
|
if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busArrearsCarryVehicleApply.getCreateBySid())) { |
|
|
|
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); |
|
|
|
} else { |
|
|
|
messageFlowableQuery.setMsgContent(busArrearsCarryVehicleApply.getApplyName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); |
|
|
|
} |
|
|
|
messageFlowableQuery.setMsgTitle("提前开票申请"); |
|
|
|
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery); |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
} |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean revokeProcess(AppAdvanceArrearsTaskQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
if (StringUtils.isBlank(query.getUserSid())) { |
|
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
|
} |
|
|
|
//根据业务sid查询移库申请
|
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
String businessTaskId = busArrearsCarryVehicleApply.getTaskId(); |
|
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo); |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg("操作失败!"); |
|
|
|
} |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} |
|
|
|
} |
|
|
|
return rb.setMsg("操作失败,提交的数据不一致!"); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean breakProcess(AppAdvanceArrearsTaskQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
if (StringUtils.isBlank(query.getInstanceId())) { |
|
|
|
return rb.setMsg("参数错误:instanceId"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(query.getUserSid())) { |
|
|
|
return rb.setMsg("参数错误:userSid"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(query.getComment())) { |
|
|
|
return rb.setMsg("意见不能为空"); |
|
|
|
} |
|
|
|
BusArrearsCarryVehicleApply busArrearsCarryVehicleApply = fetchBySid(query.getBusinessSid()); |
|
|
|
String businessTaskId = busArrearsCarryVehicleApply.getTaskId(); |
|
|
|
if (StringUtils.isNotBlank(businessTaskId)) { |
|
|
|
if (businessTaskId.equals(query.getTaskId())) { |
|
|
|
FlowTaskVo flowTaskVo = new FlowTaskVo(); |
|
|
|
BeanUtil.copyProperties(query, flowTaskVo); |
|
|
|
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); |
|
|
|
if (!resultBean.getSuccess()) { |
|
|
|
return rb.setMsg(resultBean.getMsg()); |
|
|
|
} |
|
|
|
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); |
|
|
|
return rb.success().setData(resultBean.getData()); |
|
|
|
} |
|
|
|
} |
|
|
|
return rb.setMsg("操作失败!提交的数据不一致!"); |
|
|
|
} |
|
|
|
|
|
|
|
} |