Browse Source

Merge remote-tracking branch 'origin/master'

master
fanzongzhe0036 3 months ago
parent
commit
1adfb62a01
  1. 2
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/fukuanshenqing/paymentAdd.vue
  2. 15
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/fukuanshenqing/paymentInfo.vue
  3. 15
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/fukuanguanliFlow/fukuanguanli/fukuanDaiBanInfo.vue
  4. 2
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/fukuanguanliFlow/fukuanguanli/fukuanEdit.vue
  5. 15
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/fukuanguanliFlow/fukuanguanli/fukuanYiBanInfo.vue
  6. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyService.java
  7. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapplydetails/FinPaymentapplyDetailsMapper.xml
  8. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/OrgVo.java
  9. 4
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeign.java
  10. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeignFallback.java
  11. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeign.java
  12. 8
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeignFallback.java
  13. 6
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationRest.java
  14. 28
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationService.java
  15. 5
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgRest.java
  16. 23
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgService.java
  17. 58
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebate.java
  18. 4
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateExcelVo.java
  19. 2
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateVo.java
  20. 8
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java
  21. 8
      anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js
  22. 8
      anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatecheck.js
  23. 8
      anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatewithholding.js
  24. 52
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatecheck.vue
  25. 2
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagement.vue
  26. 1
      anrui-scm/anrui-scm-ui/src/views/financialDiscount/differenceManagement/differenceManagementAdd.vue
  27. 49
      anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatecheck/specialrebatecheck.vue
  28. 50
      anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatewithholding/specialrebatewithholding.vue
  29. 1
      anrui-scm/anrui-scm-ui/src/views/workFlow/chayitiaozhengFlow/differenceManagementEdit.vue
  30. 29
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaFormRest.java
  31. 27
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java
  32. 311
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java
  33. 69
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/BusinessVariablesDto.java
  34. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java
  35. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/DelegateDto.java
  36. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/OaFormFlowDto.java
  37. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/SubmitDto.java
  38. 8
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskDto.java
  39. 99
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java
  40. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/OrgVo.java
  41. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java
  42. 5
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java
  43. 12
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java
  44. 21
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserQuery.java
  45. 19
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserRoleQuery.java

2
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/fukuanshenqing/paymentAdd.vue

@ -640,7 +640,7 @@ export default {
const choose = this.actualPay_list.filter((item) => item.actualPay === value)
if (choose.length > 0 && choose !== null) {
row.actualPay = choose[0].actualPay
row.receiveCompany = choose[0].manufacturerName
row.receiveCompany = choose[0].accountName
row.bank = choose[0].depositBank
row.receivingAccount = choose[0].bankAccount
} else {

15
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/fukuanshenqing/paymentInfo.vue

@ -47,7 +47,7 @@
<div class="span-sty">付款单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" class="tlineheightb">
<div class="span-sty">付款申请备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
@ -352,4 +352,17 @@ export default {
.addinputInfo {
margin-left: 140px !important;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

15
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/fukuanguanliFlow/fukuanguanli/fukuanDaiBanInfo.vue

@ -49,7 +49,7 @@
<div class="span-sty">付款单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" class="tlineheightb">
<div class="span-sty">付款申请备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
@ -525,4 +525,17 @@ export default {
.addinputInfo {
margin-left: 140px !important;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

2
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/fukuanguanliFlow/fukuanguanli/fukuanEdit.vue

@ -631,7 +631,7 @@ export default {
const choose = this.actualPay_list.filter((item) => item.actualPay === value)
if (choose.length > 0 && choose !== null) {
row.actualPay = choose[0].actualPay
row.receiveCompany = choose[0].manufacturerName
row.receiveCompany = choose[0].accountName
row.bank = choose[0].depositBank
row.receivingAccount = choose[0].bankAccount
} else {

15
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/fukuanguanliFlow/fukuanguanli/fukuanYiBanInfo.vue

@ -47,7 +47,7 @@
<div class="span-sty">付款单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" class="tlineheightb">
<div class="span-sty">付款申请备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
@ -394,4 +394,17 @@ export default {
.addinputInfo {
margin-left: 140px !important;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapply/FinPaymentapplyService.java

@ -622,6 +622,8 @@ public class FinPaymentapplyService extends MybatisBaseService<FinPaymentapplyMa
//收款银行账号
finPaymentrecordDto.setReceiveBankAccount(finPaymentapplyDetailVo.getReceivingAccount());
finPaymentrecordDto.setReceiveBank(finPaymentapplyDetailVo.getBank());
//收款单位名称
finPaymentrecordDto.setReceiveCompany(finPaymentapplyDetailVo.getReceiveCompany());
//金额
if (StringUtils.isNotBlank(finPaymentapplyDetailVo.getPayAccount())) {
finPaymentrecordDto.setCost(finPaymentapplyDetailVo.getPayAccount());
@ -645,6 +647,8 @@ public class FinPaymentapplyService extends MybatisBaseService<FinPaymentapplyMa
//收款银行账号
finPaymentrecordDto.setReceiveBankAccount(finPaymentapplyDetailsBelowDetailsVo.getReceivingAccount());
finPaymentrecordDto.setReceiveBank(finPaymentapplyDetailsBelowDetailsVo.getBank());
//收款单位名称
finPaymentrecordDto.setReceiveCompany(finPaymentapplyDetailsBelowDetailsVo.getReceiveCompany());
//金额
if (finPaymentapplyDetailsBelowDetailsVo.getPayAccount() != null) {
finPaymentrecordDto.setCost(finPaymentapplyDetailsBelowDetailsVo.getPayAccount().toString());

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentapplydetails/FinPaymentapplyDetailsMapper.xml

@ -11,7 +11,7 @@
fd.remarks,
fd.costTitleValue,
fd.receiveCompany,
SUM(fdb.payAccount) AS payAccountTotal
IFNULL(SUM(fdb.payAccount), 0) AS payAccountTotal
from fin_paymentapply_details fd
LEFT JOIN fin_paymentapply_details_below fdb
ON fd.sid = fdb.detailSid

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/OrgVo.java → anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/OrgVo.java

@ -1,4 +1,4 @@
package com.yxt.anrui.portal.api.sysstafforg;
package com.yxt.anrui.portal.api.sysorganization;
import lombok.Data;

4
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeign.java

@ -230,4 +230,8 @@ public interface SysOrganizationFeign {
@ApiOperation("当前分公司销售专员")
ResultBean<List<SysFinanceVo>> selectStaffListByUseOrgSid(@RequestParam("useOrgSid") String useOrgSid);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据组织全路径查询组织")
ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeignFallback.java

@ -236,4 +236,9 @@ public class SysOrganizationFeignFallback implements SysOrganizationFeign {
public ResultBean<List<SysFinanceVo>> selectStaffListByUseOrgSid(String useOrgSid) {
return null;
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return null;
}
}

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeign.java

@ -127,8 +127,5 @@ public interface SysStaffOrgFeign {
@ApiOperation("根据组织全路径查询当前部门下的所有员工")
ResultBean<List<SysStaffOrgByUserVo>> selAllByOrgSidPath(@RequestParam("orgSidPath") String orgSidPath);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据组织全路径查询组织")
ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

8
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeignFallback.java

@ -1,5 +1,6 @@
package com.yxt.anrui.portal.api.sysstafforg;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -51,7 +52,7 @@ public class SysStaffOrgFeignFallback implements SysStaffOrgFeign {
public ResultBean save(SysStaffOrgDto dto){
return ResultBean.fireFail().setMsg("接口anrui_portal/sysstafforg/save无法访问");
}
@Override
public ResultBean update(SysStaffOrgDto dto,String sid){
return ResultBean.fireFail().setMsg("接口anrui_portal/sysstafforg/update无法访问");
@ -115,11 +116,6 @@ public class SysStaffOrgFeignFallback implements SysStaffOrgFeign {
return null;
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return null;
}
@Override
public ResultBean<SysStaffOrg> selectAllByStaffSid(String staffSid) {
return null;

6
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationRest.java

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.portal.api.sysorganization.*;
import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfo;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysuser.SysUser;
@ -505,4 +506,9 @@ public class SysOrganizationRest implements SysOrganizationFeign {
List<SysFinanceVo> voList = sysOrganizationService.selectStaffListByUseOrgSid(useOrgSid);
return rb.success().setData(voList);
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return sysOrganizationService.getOrgByPath(orgSidPath);
}
}

28
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationService.java

@ -717,7 +717,7 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
}
public List<SysOrganization> selectByOrgCodeAndPsid(String orgCode, String pSid) {
return baseMapper.selectByOrgCodeAndPsid(orgCode,pSid);
return baseMapper.selectByOrgCodeAndPsid(orgCode, pSid);
}
public List<SysOrganizationVo> tranOne(String sid) {
@ -728,8 +728,8 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
return baseMapper.tranTwo(sid);
}
public List<SysOrganizationVo> tranThree(String sid,String deptSid) {
return baseMapper.tranThree(sid,deptSid);
public List<SysOrganizationVo> tranThree(String sid, String deptSid) {
return baseMapper.tranThree(sid, deptSid);
}
public List<SysOrganizationVo> tranfour(String sid) {
@ -749,4 +749,26 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
}
return new ArrayList<>();
}
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
ResultBean<OrgVo> rb = ResultBean.fireFail();
OrgVo orgVo = new OrgVo();
String[] levels = orgSidPath.split("/"); // 将orgSidPath按'/'分割
String orgSid = "";
// 判断层级
if (levels.length > 3) {
orgSid = levels[2]; // 第三层级的sid
} else {
orgSid = levels[levels.length - 2]; // 倒数第二层级的sid
}
SysOrganization sysOrganization = fetchBySid(orgSid);
orgVo.setUseOrgName(sysOrganization.getName());
orgVo.setUseOrgSid(sysOrganization.getSid());
orgVo.setOrgCode(sysOrganization.getOrgCode());
String lastPart = levels[levels.length - 1];
sysOrganization = fetchBySid(lastPart);
orgVo.setDeptName(sysOrganization.getName());
orgVo.setDeptSid(sysOrganization.getSid());
return rb.success().setData(orgVo);
}
}

5
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgRest.java

@ -1,5 +1,6 @@
package com.yxt.anrui.portal.biz.sysstafforg;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.anrui.portal.api.sysstafforg.*;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
@ -160,8 +161,4 @@ public class SysStaffOrgRest implements SysStaffOrgFeign {
return sysStaffOrgService.getPathSidByUserSid(applySid);
}
@Override
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
return sysStaffOrgService.getOrgByPath(orgSidPath);
}
}

23
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstafforg/SysStaffOrgService.java

@ -3,6 +3,7 @@ package com.yxt.anrui.portal.biz.sysstafforg;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.sysorganization.OrgVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysstafforg.*;
import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo;
@ -341,25 +342,5 @@ public class SysStaffOrgService extends MybatisBaseService<SysStaffOrgMapper, Sy
return rb.success().setData(sysStaffOrgByUserVoList);
}
public ResultBean<OrgVo> getOrgByPath(String orgSidPath) {
ResultBean<OrgVo> rb = ResultBean.fireFail();
OrgVo orgVo = new OrgVo();
String[] levels = orgSidPath.split("/"); // 将orgSidPath按'/'分割
String orgSid = "";
// 判断层级
if (levels.length > 3) {
orgSid = levels[2]; // 第三层级的sid
} else {
orgSid = levels[levels.length - 2]; // 倒数第二层级的sid
}
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(orgSid);
orgVo.setUseOrgName(sysOrganization.getName());
orgVo.setUseOrgSid(sysOrganization.getSid());
orgVo.setOrgCode(sysOrganization.getOrgCode());
String lastPart = orgSidPath.contains("/") ? orgSidPath.substring(orgSidPath.lastIndexOf("/") + 1) : orgSidPath;
sysOrganization = sysOrganizationService.fetchBySid(lastPart);
orgVo.setDeptName(sysOrganization.getName());
orgVo.setDeptSid(sysOrganization.getSid());
return rb.success().setData(orgVo);
}
}

58
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebate.java

@ -54,57 +54,57 @@ import java.util.Date;
public class ScmVehRebate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("品牌sid")
@ApiModelProperty("品牌sid")
private String brandSid; // 品牌sid
@ApiModelProperty("品牌名称")
@ApiModelProperty("品牌名称")
private String brandName; // 品牌名称
@ApiModelProperty("车型sid")
@ApiModelProperty("车型sid")
private String vehModelSid; // 车型sid
@ApiModelProperty("车型名称")
@ApiModelProperty("车型名称")
private String vehModelName; // 车型名称
@ApiModelProperty("车辆sid")
@ApiModelProperty("车辆sid")
private String vehSid; // 车辆sid
@ApiModelProperty("车架号")
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("厂家结算价")
@ApiModelProperty("厂家结算价")
private String manufactorSettlementPrice; // 厂家结算价
@ApiModelProperty("运费")
@ApiModelProperty("运费")
private String freight; // 运费
@ApiModelProperty("返利类型key")
@ApiModelProperty("返利类型key")
private String rebateTypeKey; // 返利类型key
@ApiModelProperty("返利类型value")
@ApiModelProperty("返利类型value")
private String rebateTypeValue; // 返利类型value
@ApiModelProperty("返利名称")
@ApiModelProperty("返利名称")
private String rebateName; // 返利名称
@ApiModelProperty("计算标准")
@ApiModelProperty("计算标准")
private String calculationStandard; // 计算标准
@ApiModelProperty("预计返利")
@ApiModelProperty("预计返利")
private String estimateRebate; // 预计返利
@ApiModelProperty("所属年月")
@ApiModelProperty("所属年月")
private String palceGenDate; // 所属年月
@ApiModelProperty("预提日期")
@ApiModelProperty("预提日期")
private String withholdingDate; // 预提日期
@ApiModelProperty("上传日期")
@ApiModelProperty("上传日期")
private String uploadDate; // 上传日期
@ApiModelProperty("上传金额")
@ApiModelProperty("上传金额")
private String uploadMoney; // 上传金额
@ApiModelProperty("二次上传日期")
@ApiModelProperty("二次上传日期")
private String secondaryUploadDate; // 二次上传日期
@ApiModelProperty("二次上传金额")
@ApiModelProperty("二次上传金额")
private String secondaryUploadMoney; // 二次上传金额
@ApiModelProperty("待确定金额(动态)")
private String stayDetermineMoney;
@ApiModelProperty("待确定金额(常量)")
private String stayDetermineMoneyNew;
@ApiModelProperty("是否调整")
@ApiModelProperty("是否调整")
private String isAdjustment; // 是否调整
@ApiModelProperty("调整金额")
@ApiModelProperty("调整金额")
private String adjustmentMoney; // 调整金额
@ApiModelProperty("调整说明")
@ApiModelProperty("调整说明")
private String adjustmentRemarks; // 调整说明
@ApiModelProperty("计算方式key")
@ApiModelProperty("计算方式key")
private String calculationModeKey; // 计算方式key
@ApiModelProperty("计算方式Value")
@ApiModelProperty("计算方式Value")
private String calculationModeValue; // 计算方式Value
@ApiModelProperty("调整状态")
private Integer adjustmentState;
@ -139,13 +139,13 @@ public class ScmVehRebate extends BaseEntity {
@ApiModelProperty("二次抵顶费用说明")
private String secondSuppRemark;
@ApiModelProperty("使用组织sid")
@ApiModelProperty("使用组织sid")
private String useOrgSid; // 使用组织sid
@ApiModelProperty("使用组织名称")
@ApiModelProperty("使用组织名称")
private String useOrgName; // 使用组织名称
@ApiModelProperty("创建组织sid")
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty("创建组织名称")
@ApiModelProperty("创建组织名称")
private String createOrgName; // 创建组织名称
@ApiModelProperty("组织全路径")
private String orgPath;
@ -155,6 +155,4 @@ public class ScmVehRebate extends BaseEntity {
private String purchaseSystemName;
}

4
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateExcelVo.java

@ -51,12 +51,16 @@ public class ScmVehRebateExcelVo {
private String manufactorSettlementPrice;
@ExportEntityMap(CnName = "其中运费", EnName = "freight")
private String freight;
@ExportEntityMap(CnName = "上装金额", EnName = "topAmount")
private String topAmount;
@ExportEntityMap(CnName = "创建日期", EnName = "createTime")
private String createTime;
@ExportEntityMap(CnName = "返利类型", EnName = "rebateTypeValue")
private String rebateTypeValue;
@ExportEntityMap(CnName = "返利名称", EnName = "rebateName")
private String rebateName;
@ExportEntityMap(CnName = "计算方式", EnName = "calculationModeValue")
private String calculationModeValue;
@ExportEntityMap(CnName = "计算标准", EnName = "calculationStandard")
private String calculationStandard;
@ExportEntityMap(CnName = "预计返利", EnName = "estimateRebate")

2
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateVo.java

@ -152,4 +152,6 @@ public class ScmVehRebateVo implements Vo {
private String purchaseSystemSid;
@ApiModelProperty("采购系统")
private String purchaseSystemName;
@ApiModelProperty("上装金额")
private BigDecimal topAmount;
}

8
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java

@ -170,6 +170,11 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
qw.orderByDesc("createTime");
IPage<ScmVehRebate> page = PagerUtil.queryToPage(pq);
IPage<ScmVehRebateVo> pagging = baseMapper.selectPageVo(page, qw);
for (ScmVehRebateVo record : pagging.getRecords()) {
if ("001".equals(record.getCalculationModeKey())){
record.setCalculationStandard(record.getCalculationStandard() + "%");
}
}
PagerVo<ScmVehRebateVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@ -2033,6 +2038,9 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
}else if (scmVehRebateExcelVo.getOnceCheckState().equals("2")){
scmVehRebateExcelVo.setOnceCheckState("一次核对中");
}
if ("比例".equals(scmVehRebateExcelVo.getCalculationModeValue())){
scmVehRebateExcelVo.setCalculationStandard(scmVehRebateExcelVo.getCalculationStandard() + "%");
}
}
return scmVehRebateExcelVos;
}

8
anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js

@ -66,6 +66,14 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 重推
rePushVoucher: function(data) {
return request({
url: '/scm/v1/scmvehrebatecheckapply/rePushVoucher',
method: 'post',
params: data
})
},
// 删除
delete: function(params) {
return request({

8
anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatecheck.js

@ -66,6 +66,14 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 重推
rePushVoucher: function(data) {
return request({
url: '/scm/v1/scmspecialrebatecheckapply/rePushVoucher',
method: 'post',
params: data
})
},
// 删除
delete: function(params) {
return request({

8
anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatewithholding.js

@ -19,6 +19,14 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 重推
rePushVoucher: function(data) {
return request({
url: '/scm/v1/scmspecialrebatewithapply/rePushVoucher',
method: 'post',
params: data
})
},
// 删除
delete: function(params) {
return request({

52
anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatecheck.vue

@ -102,7 +102,7 @@ import req from '@/api/bikerebate/bicyclerebatecheck'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { brandDown, getOrgSidByPath } from '@/api/cheliang/dictcommons'
import { brandDown, getButtonPermissions, getOrgSidByPath } from '@/api/cheliang/dictcommons'
import bicyclerebatecheckAdd from './bicyclerebatecheckAdd'
import bicyclerebatecheckInfo from './bicyclerebatecheckInfo'
import { getStorage } from '@/utils/auth'
@ -123,6 +123,13 @@ export default {
centerDialogVisible: false,
btndisabled: false,
btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{
type: 'danger',
size: 'small',
@ -145,6 +152,7 @@ export default {
tableKey: 0,
list: [],
sids: [],
multipleSelection: [],
FormLoading: false,
listLoading: false,
brand_list: '',
@ -174,7 +182,18 @@ export default {
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
getButtonPermissions({ userSid: window.sessionStorage.getItem('userSid'), url: this.$route.path, type: 0 }).then((res) => {
if (res.success) {
for (var i = 0; i < res.data.length; i++) {
for (var k = 0; k < this.btnList.length; k++) {
if (res.data[i].buttonId === this.btnList[k].btnKey) {
this.btnList.splice(k, 1)
}
}
}
this.$refs['btnbar'].setButtonList(this.btnList)
}
})
},
methods: {
async handleMessage(event) {
@ -231,6 +250,9 @@ export default {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'toRepush':
this.toRepush()
break
case 'doDel':
this.doDel()
break
@ -249,11 +271,11 @@ export default {
},
handleSelectionChange(row) {
const aa = []
this.multipleSelection = row
row.forEach((element) => {
aa.push(element.sid)
})
this.sids = aa
console.log('sids', this.sids)
},
//
getList() {
@ -301,6 +323,30 @@ export default {
}
this.init()
},
toRepush() {
if (this.multipleSelection.length === 1 && this.multipleSelection[0].nodeState === '已办结') {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.rePushVoucher({ sid: this.sids[0] }).then((resp) => {
if (resp.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '重推成功' })
this.getList()
} else {
loading.close()
}
}).catch(() => {
loading.close()
})
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录且状态为已办结的进行重推操作' })
return
}
},
handleClick() {
this.$parent.resetState()
this.$parent.handleReset()

2
anrui-scm/anrui-scm-ui/src/views/bikerebate/bikerebatemanagement/bicyclerebatemanagement.vue

@ -81,9 +81,11 @@
<el-table-column prop="vinNo" label="车架号" align="center" width="150" />
<el-table-column prop="manufactorSettlementPrice" label="车辆入库价" align="center" width="140" />
<el-table-column prop="freight" label="其中运费" align="center" width="120" />
<el-table-column prop="topAmount" label="其中上装金额" align="center" width="140" />
<el-table-column prop="createTime" label="创建日期" align="center" width="120" />
<el-table-column prop="rebateTypeValue" label="返利类型" align="center" width="150" />
<el-table-column prop="rebateName" label="返利名称" align="center" width="150" />
<el-table-column prop="calculationModeValue" label="计算方式" align="center" width="100" />
<el-table-column prop="calculationStandard" label="计算标准" align="center" width="100" />
<el-table-column prop="estimateRebate" label="预计返利" align="center" width="120" />
<el-table-column prop="expectCost" label="其中预计费用" align="center" width="160" />

1
anrui-scm/anrui-scm-ui/src/views/financialDiscount/differenceManagement/differenceManagementAdd.vue

@ -307,6 +307,7 @@ export default {
value.forEach((e) => {
this.formobj.list.push({
rebateSid: e.rebateSid,
checkApplySid: e.checkApplySid,
purchaseSystemSid: e.purchaseSystemSid,
purchaseSystemName: e.purchaseSystemName,
brandSid: e.brandSid,

49
anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatecheck/specialrebatecheck.vue

@ -102,7 +102,7 @@ import req from '@/api/specialrebate/specialrebatecheck'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { getOrgSidByPath } from '@/api/cheliang/dictcommons'
import { getButtonPermissions } from '@/api/cheliang/dictcommons'
import specialrebatecheckAdd from './specialrebatecheckAdd'
import specialrebatecheckInfo from './specialrebatecheckInfo'
import { getStorage } from '@/utils/auth'
@ -123,6 +123,13 @@ export default {
centerDialogVisible: false,
btndisabled: false,
btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{
type: 'danger',
size: 'small',
@ -145,6 +152,7 @@ export default {
tableKey: 0,
list: [],
sids: [],
multipleSelection: [],
FormLoading: false,
listLoading: false,
listQuery: {
@ -172,7 +180,18 @@ export default {
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
getButtonPermissions({ userSid: window.sessionStorage.getItem('userSid'), url: this.$route.path, type: 0 }).then((res) => {
if (res.success) {
for (var i = 0; i < res.data.length; i++) {
for (var k = 0; k < this.btnList.length; k++) {
if (res.data[i].buttonId === this.btnList[k].btnKey) {
this.btnList.splice(k, 1)
}
}
}
this.$refs['btnbar'].setButtonList(this.btnList)
}
})
},
methods: {
async handleMessage(event) {
@ -233,11 +252,11 @@ export default {
},
handleSelectionChange(row) {
const aa = []
this.multipleSelection = row
row.forEach((element) => {
aa.push(element.sid)
})
this.sids = aa
console.log('sids', this.sids)
},
//
getList() {
@ -284,6 +303,30 @@ export default {
}
this.getList()
},
toRepush() {
if (this.multipleSelection.length === 1 && this.multipleSelection[0].nodeState === '已办结') {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.rePushVoucher({ sid: this.sids[0] }).then((resp) => {
if (resp.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '重推成功' })
this.getList()
} else {
loading.close()
}
}).catch(() => {
loading.close()
})
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录且状态为已办结的进行重推操作' })
return
}
},
handleClick() {
this.$parent.resetState()
this.$parent.handleReset()

50
anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatewithholding/specialrebatewithholding.vue

@ -97,6 +97,7 @@ import ButtonBar from '@/components/ButtonBar'
import specialrebatewithholdingAdd from './specialrebatewithholdingAdd'
import specialrebatewithholdingInfo from './specialrebatewithholdingInfo'
import { getStorage } from '@/utils/auth'
import { getButtonPermissions } from '@/api/cheliang/dictcommons'
export default {
name: 'ZhuanXiangFanLiYuTi',
@ -121,6 +122,13 @@ export default {
btnKey: 'toAdd',
btnLabel: '新增'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{
type: 'danger',
size: 'small',
@ -143,6 +151,7 @@ export default {
tableKey: 0,
list: [],
sids: [],
multipleSelection: [],
FormLoading: false,
listLoading: false,
listQuery: {
@ -174,7 +183,18 @@ export default {
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
getButtonPermissions({ userSid: window.sessionStorage.getItem('userSid'), url: this.$route.path, type: 0 }).then((res) => {
if (res.success) {
for (var i = 0; i < res.data.length; i++) {
for (var k = 0; k < this.btnList.length; k++) {
if (res.data[i].buttonId === this.btnList[k].btnKey) {
this.btnList.splice(k, 1)
}
}
}
this.$refs['btnbar'].setButtonList(this.btnList)
}
})
},
methods: {
async handleMessage(event) {
@ -238,11 +258,11 @@ export default {
},
handleSelectionChange(row) {
const aa = []
this.multipleSelection = row
row.forEach((element) => {
aa.push(element.sid)
})
this.sids = aa
console.log('sids', this.sids)
},
//
getList() {
@ -253,7 +273,7 @@ export default {
req.listPage(this.listQuery).then((response) => {
console.log('列表查询结果:', response)
this.listLoading = false
if (response.success && response.data && response.data.total > 0) {
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
@ -293,6 +313,30 @@ export default {
this.viewState = 2
this.$refs['divAdd'].showAdd()
},
toRepush() {
if (this.multipleSelection.length === 1 && this.multipleSelection[0].nodeState === '已办结') {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.rePushVoucher({ sid: this.sids[0] }).then((resp) => {
if (resp.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '重推成功' })
this.getList()
} else {
loading.close()
}
}).catch(() => {
loading.close()
})
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录且状态为已办结的进行重推操作' })
return
}
},
toEdit(row) {
this.viewState = 3
this.$refs['divAdd'].showEdit(row)

1
anrui-scm/anrui-scm-ui/src/views/workFlow/chayitiaozhengFlow/differenceManagementEdit.vue

@ -289,6 +289,7 @@ export default {
value.forEach((e) => {
this.formobj.list.push({
rebateSid: e.rebateSid,
checkApplySid: e.checkApplySid,
purchaseSystemSid: e.purchaseSystemSid,
purchaseSystemName: e.purchaseSystemName,
brandSid: e.brandSid,

29
yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaFormRest.java

@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.oaform.*;
import com.yxt.anrui.oa.biz.oaform.flowable.*;
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -58,10 +57,10 @@ public class OaFormRest {
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
return oaFormService.complete(bv);
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
BusinessVariablesDto businessVariables = new BusinessVariablesDto();
BeanUtil.copyProperties(dto, businessVariables);
return oaFormService.complete(businessVariables);
}
@ApiOperation(value = "获取上一个环节")
@ -78,33 +77,33 @@ public class OaFormRest {
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody TaskQuery query) {
return oaFormService.reject(query);
public ResultBean reject(@Valid @RequestBody TaskDto dto) {
return oaFormService.reject(dto);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody TaskQuery query) {
return oaFormService.revokeProcess(query);
public ResultBean revokeProcess(@Valid @RequestBody TaskDto dto) {
return oaFormService.revokeProcess(dto);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody TaskQuery query) {
return oaFormService.breakProcess(query);
public ResultBean breakProcess(@Valid @RequestBody TaskDto dto) {
return oaFormService.breakProcess(dto);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody DelegateQuery query) {
return oaFormService.delegate(query);
public ResultBean delegate(@RequestBody DelegateDto dto) {
return oaFormService.delegate(dto);
}
@ApiOperation(value = "转办")
@PutMapping(value = "/assignTask")
@ResponseBody
public ResultBean assignTask(@RequestBody DelegateQuery query) {
return oaFormService.assignTask(query);
public ResultBean assignTask(@RequestBody DelegateDto dto) {
return oaFormService.assignTask(dto);
}
}

27
yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java

@ -25,13 +25,11 @@
*********************************************************/
package com.yxt.anrui.oa.api;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto;
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery;
import com.yxt.anrui.oa.biz.oaform.flowable.NodeVo;
import com.yxt.anrui.oa.biz.oaform.flowable.TaskQuery;
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto;
import com.yxt.anrui.oa.biz.oamendapply.*;
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -101,4 +99,27 @@ public class OaMendApplyRest {
return oaMendApplyService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
return oaMendApplyService.complete(dto);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody TaskDto dto) {
return oaMendApplyService.reject(dto);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
public ResultBean<List<NodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap NodeQuery query) {
return oaMendApplyService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
public ResultBean<List<NodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap NodeQuery query) {
return oaMendApplyService.getNextNodesForSubmit(query);
}
}

311
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java

@ -1,19 +1,15 @@
package com.yxt.anrui.oa.biz.oaform;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.oa.biz.oaform.flowable.*;
import com.yxt.anrui.oa.biz.oamendapply.OaMendApply;
import com.yxt.anrui.oa.biz.oamendapply.SubmitOaMendApplyDto;
import com.yxt.anrui.oa.feign.base.BillNo;
import com.yxt.anrui.oa.feign.base.Rule;
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.oa.feign.flowable.flow.FlowableFeign;
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum;
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign;
@ -23,12 +19,14 @@ import com.yxt.anrui.oa.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.anrui.oa.feign.message.MessageFeign;
import com.yxt.anrui.oa.feign.message.MessageFlowVo;
import com.yxt.anrui.oa.feign.message.MessageFlowableQuery;
import com.yxt.anrui.oa.feign.portal.sysorganization.OrgVo;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.anrui.oa.feign.portal.sysstafforg.OrgVo;
import com.yxt.anrui.oa.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.oa.feign.sysuser.SysUserFeign;
import com.yxt.anrui.oa.feign.sysuser.SysUserVo;
import com.yxt.anrui.oa.feign.sysuser.UserQuery;
import com.yxt.anrui.oa.feign.sysuser.UserRoleQuery;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
@ -37,7 +35,6 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import java.util.*;
@ -81,7 +78,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
BeanUtil.copyProperties(dto, oaForm, "billNo", "orgSidPath");
try {
// 获取组织信息,根据orgSidPath字段调用外部服务
OrgVo orgVo = sysStaffOrgFeign.getOrgByPath(dto.getOrgSidPath()).getData();
OrgVo orgVo = sysOrganizationFeign.getOrgByPath(dto.getOrgSidPath()).getData();
// 如果组织信息为空,返回失败信息
if (orgVo == null) {
return rb.setMsg("未找到对应的组织信息");
@ -123,6 +120,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
}
/**
* 详情初始化
*
* @param sid
* @return
*/
public ResultBean<OaFormDetailsVo> fetchDetailsBySid(String sid) {
ResultBean<OaFormDetailsVo> rb = ResultBean.fireFail();
OaFormDetailsVo detailsVo = baseMapper.fetchDetailsBySid(sid);
@ -132,6 +135,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.success().setData(detailsVo);
}
/**
* 分页列表
*
* @param pq
* @return
*/
public PagerVo<OaFormVo> listPageVo(PagerQuery<OaFormQuery> pq) {
OaFormQuery query = pq.getParams();
QueryWrapper<OaForm> qw = new QueryWrapper<>();
@ -141,6 +150,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return p;
}
/**
* 删除
*
* @param sids
* @return
*/
public ResultBean delAll(String[] sids) {
ResultBean rb = ResultBean.fireFail();
delBySids(sids);
@ -164,20 +179,27 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
/**
* 办理同意
*
* @param dto
* @return
*/
public ResultBean complete(BusinessVariablesDto dto) {
ResultBean rb = ResultBean.fireFail();
String formSid = bv.getFormVariables().get("formSid").toString();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
String businessSid = bv.getBusinessSid();
OaForm oaForm = fetchBySid(formSid);
//添加网关
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
bv.setModelId(oaForm.getProcDefId());
OaForm oaForm = fetchBySid(businessSid);
SubmitDto submitDto = new SubmitDto();
BeanUtil.copyProperties(dto, submitDto);
//构造参数
ResultBean<BusinessVariables> businessVariablesResultBean = getGatewayParameter(submitDto);
if (!businessVariablesResultBean.getSuccess()) {
return rb.setMsg(businessVariablesResultBean.getMsg());
}
BeanUtil.copyProperties(businessVariablesResultBean.getData(), bv, "taskDefKey", "taskId");
bv.setInstanceId(oaForm.getProcInstId());
if (bv.getTaskId().equals(oaForm.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
@ -185,8 +207,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
UpdateFlowFieldVo ufVo = resultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid");
oaFormFlowDto.setSid(formSid);
BeanUtil.copyProperties(ufVo, oaFormFlowDto);
updateFlow(oaFormFlowDto);
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
@ -209,7 +230,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
ufVo.setProcDefId(oaForms.getProcDefId());
ufVo.setProcInsId(oaForms.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setAppMap((Map<String, Object>) bv.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName(oaForms.getFormType());
messageFlowableQuery.setMsgContent(oaForms.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
@ -227,36 +248,38 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
}
/**
* 获取上一环节
*
* @param query
* @return
*/
public ResultBean<List<NodeVo>> getPreviousNodesForReject(NodeQuery query) {
ResultBean<List<NodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//查询业务信息
OaForm oaForm = fetchBySid(query.getBusinessSid());
//网关
bv.setModelId(oaForm.getProcDefId());
bv.setFormVariables(variables);
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<NodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), NodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
/**
* 获取下一环节
*
* @param query
* @return
*/
public ResultBean<List<NodeVo>> getNextNodesForSubmit(NodeQuery query) {
ResultBean<List<NodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//查询业务信息
OaForm oaForm = fetchBySid(query.getBusinessSid());
//网关
bv.setModelId(oaForm.getProcDefId());
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
@ -264,31 +287,31 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.success().setData(voList);
}
public ResultBean reject(TaskQuery query) {
/**
* 驳回
*
* @param dto
* @return
*/
public ResultBean reject(TaskDto dto) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
String businessSid = dto.getBusinessSid();
OaForm oaForm = fetchBySid(businessSid);
if (oaForm == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
if (businessTaskId.equals(dto.getTaskId())) {
if (StringUtils.isBlank(dto.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
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);
//网关
BeanUtil.copyProperties(dto, flowTaskVo);
Map<String, Object> variables = dto.getFormVariables();
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
@ -316,7 +339,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
ufVo.setProcInsId(oaForms.getProcInstId());
ufVo.setProcDefId(oaForms.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setAppMap((Map<String, Object>) dto.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName(oaForms.getFormType());
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(oaForms.getProcInstId());
@ -340,17 +363,23 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(TaskQuery query) {
/**
* 撤回
*
* @param dto
* @return
*/
public ResultBean revokeProcess(TaskDto dto) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
OaForm oaForm = fetchBySid(query.getBusinessSid());
OaForm oaForm = fetchBySid(dto.getBusinessSid());
String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (businessTaskId.equals(dto.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -364,23 +393,29 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean breakProcess(TaskQuery query) {
/**
* 终止
*
* @param dto
* @return
*/
public ResultBean breakProcess(TaskDto dto) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
if (StringUtils.isBlank(dto.getProcInsId())) {
return rb.setMsg("参数错误:procInsId");
}
if (StringUtils.isBlank(query.getUserSid())) {
if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
if (StringUtils.isBlank(dto.getComment())) {
return rb.setMsg("请填写意见");
}
OaForm oaForm = fetchBySid(query.getBusinessSid());
OaForm oaForm = fetchBySid(dto.getBusinessSid());
String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(oaForm.getCreateBySid())) {
if (dto.getUserSid().equals(oaForm.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -390,9 +425,9 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
updateFlow(oaFormFlowDto);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
if (businessTaskId.equals(dto.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -407,63 +442,52 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(DelegateQuery query) {
/**
* 加签
*
* @param dto
* @return
*/
public ResultBean delegate(DelegateDto dto) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
BeanUtil.copyProperties(dto, delegateQuery);
delegateQuery.setInstanceId(dto.getProcInsId());
flowFeign.delegate(delegateQuery);
return rb.success();
}
public ResultBean assignTask(DelegateQuery query) {
/**
* 转办
*
* @param dto
* @return
*/
public ResultBean assignTask(DelegateDto dto) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
BeanUtil.copyProperties(dto, delegateQuery);
delegateQuery.setInstanceId(dto.getProcInsId());
flowFeign.assignTask(delegateQuery);
return rb.success();
}
/**
* 更新流程名称和标题
*
* @param oaForm
* @return
*/
public int updateFormType(OaForm oaForm) {
return baseMapper.updateById(oaForm);
}
public ResultBean submit1(BusinessVariables bv) {
String businessSid = bv.getBusinessSid();
//启动流程
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid");
oaFormFlowDto.setSid(businessSid);
updateFlow(oaFormFlowDto);
OaForm oaForm = fetchBySid(businessSid);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) bv.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName(oaForm.getFormType());
messageFlowableQuery.setMsgContent(oaForm.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle(oaForm.getFormType());
messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
return voResultBean;
}
/**
* 提交
*
* @param dto
* @return
*/
public ResultBean submit(SubmitDto dto) {
ResultBean rb = ResultBean.fireFail();
ResultBean<BusinessVariables> businessVariablesResultBean = getGatewayParameter(dto);
@ -478,7 +502,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid");
BeanUtil.copyProperties(ufVo, oaFormFlowDto);
updateFlow(oaFormFlowDto);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
@ -504,23 +528,33 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
return voResultBean;
} else if (r == 2) {
bv.setTaskId(oaForm.getTaskId());
bv.setTaskDefKey(oaForm.getNodeId());
bv.setComment("重新提交");
bv.setInstanceId(oaForm.getProcInstId());
return complete(bv);
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto();
BeanUtil.copyProperties(bv, businessVariablesDto);
businessVariablesDto.setProcInsId(oaForm.getProcInstId());
businessVariablesDto.setTaskId(oaForm.getTaskId());
businessVariablesDto.setTaskDefKey(oaForm.getNodeId());
businessVariablesDto.setComment("重新提交");
return complete(businessVariablesDto);
}
return rb;
}
/**
* 提交锁
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitDto dto) {
int r = 0;
if (dto.isNew()) {
OaForm oaForm = fetchBySid(dto.getBusinessSid());
if (StringUtils.isBlank(oaForm.getTaskId()) && StringUtils.isBlank(dto.getNextNodeSid())) {
//新提交
r = 1;
} else {
} else if (StringUtils.isNotBlank(oaForm.getTaskId()) && oaForm.getTaskId().equals(dto.getNextNodeSid())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
return r;
}
@ -541,7 +575,11 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
//流程定义id
bv.setModelId(dto.getProcDefId());
if (StringUtils.isBlank(oaForm.getProcDefId())) {
bv.setModelId(dto.getProcDefId());
} else {
bv.setModelId(oaForm.getProcDefId());
}
int rule = dto.getRule();
if (rule == OaFormRuleEnum.DIRECTLY_UNDER.getRule()) {
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
@ -551,9 +589,56 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
bv.setNextNodeUserSids(organizationVo.getManagerSid());
} else if (rule == OaFormRuleEnum.INSTITUTION.getRule()) {
//获取本机构链(含集团、事业部、分公司部门)中角色的用户(角色sid,发起人orgsidPath)
NodeQuery query = new NodeQuery();
query.setBusinessSid(dto.getBusinessSid());
query.setTaskDefKey(oaForm.getNodeId());
ResultBean<List<NodeVo>> resultBean = getNextNodesForSubmit(query);
List<NodeVo> voList = resultBean.getData();
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(candidateGroups.get(0));
userQuery.setOrgSidPath(bv.getOrgSidPath());
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRole(userQuery).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)) {
bv.setNextNodeUserSids("");
} else {
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
}
} else if (rule == OaFormRuleEnum.OTHER_INSTITUTION.getRule()) {
//获取其他机构链角色的用户(角色sid,机构sid])
NodeQuery query = new NodeQuery();
query.setBusinessSid(dto.getBusinessSid());
query.setTaskDefKey(oaForm.getNodeId());
ResultBean<List<NodeVo>> resultBean = getNextNodesForSubmit(query);
List<NodeVo> voList = resultBean.getData();
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserRoleQuery userRoleQuery = new UserRoleQuery();
userRoleQuery.setRoleSid(candidateGroups.get(0));
userRoleQuery.setOrgSid(dto.getOrgSid());
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)) {
bv.setNextNodeUserSids("");
} else {
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
}
} else {
bv.setNextNodeUserSids("");
}

69
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/BusinessVariablesDto.java

@ -0,0 +1,69 @@
package com.yxt.anrui.oa.biz.oaform.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/13
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BusinessVariablesDto {
/**
* 分公司sid
*/
public static final String ORGPATH = "orgPath";
/**
* 流程定义的id
*/
private String modelId;
/**
* 审批意见
*/
private String comment;
@ApiModelProperty("实例id")
private String procInsId;
/**
* taskId
*/
private String taskId;
/**
* 当前用户的id
*/
private String userSid;
/**
* 当前用户部门的全路径
*/
private String orgSidPath;
/**
* 业务sid
*/
private String businessSid;
/**
* 环节定义的ID
*/
private String taskDefKey;
/**
* nextNodeUserSids 下一环节的用户sid
*/
private String nextNodeUserSids;
/**
* 业务参数按需传递
*/
private Map<String, Object> formVariables = new HashMap<>();
/**
* 规则请查看OaFormRuleEnum
*/
private int rule;
}

4
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java

@ -25,9 +25,7 @@ public class CompleteDto implements Dto {
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id(PC)")
private String instanceId;
@ApiModelProperty(value = "流程id(移动)")
@ApiModelProperty(value = "流程实例id")
private String procInsId;
@ApiModelProperty(value = "意见")
private String comment;

6
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/DelegateQuery.java → yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/DelegateDto.java

@ -9,12 +9,12 @@ import lombok.Data;
* @date: 2025/1/9
**/
@Data
public class DelegateQuery {
public class DelegateDto {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("实例id")
private String procInsId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")

2
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/OaFormFlowDto.java

@ -16,7 +16,7 @@ public class OaFormFlowDto {
private String procDefId;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("流程实例id")
@ApiModelProperty("实例id")
private String procInsId;
@ApiModelProperty("环节id")
private String taskDefKey;

6
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/SubmitDto.java

@ -26,6 +26,8 @@ public class SubmitDto {
private String nextNodeUserSids;
@ApiModelProperty("下一处理人获取规则")
private int rule;
@ApiModelProperty("是否是首次提交")
private boolean isNew;
@ApiModelProperty("任务id")
private String nextNodeSid;
@ApiModelProperty("若含有其他机构的sid,则传")
private String orgSid;
}

8
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskQuery.java → yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskDto.java

@ -13,7 +13,7 @@ import java.util.Map;
* @date: 2025/1/9
**/
@Data
public class TaskQuery {
public class TaskDto {
/**
* 终止驳回撤回
@ -40,10 +40,10 @@ public class TaskQuery {
/**
* 终止
*/
@ApiModelProperty("流程实例Id(PC)")
private String instanceId;
/* @ApiModelProperty("流程实例Id(PC)")
private String instanceId;*/
@ApiModelProperty("流程实例Id(移动)")
@ApiModelProperty("实例id")
private String procInsId;
private Map<String, Object> formVariables = new HashMap<>();

99
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java

@ -28,23 +28,13 @@ package com.yxt.anrui.oa.biz.oamendapply;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendix;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService;
import com.yxt.anrui.oa.biz.oaform.OaForm;
import com.yxt.anrui.oa.biz.oaform.OaFormDto;
import com.yxt.anrui.oa.biz.oaform.OaFormService;
import com.yxt.anrui.oa.biz.oaform.flowable.OaFormFlowDto;
import com.yxt.anrui.oa.biz.oaform.flowable.SubmitDto;
import com.yxt.anrui.oa.biz.oaform.flowable.*;
import com.yxt.anrui.oa.feign.file.OaFileEnum;
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum;
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign;
import com.yxt.anrui.oa.feign.message.MessageFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.common.base.config.component.FileUploadComponent;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -52,13 +42,11 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
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.*;
@Service
public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, OaMendApply> {
@ -164,18 +152,15 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
entity.setFormSid(resultBean.getData());
baseMapper.insert(entity);
// 处理附件
saveFiles(sid, files, OaFileEnum.OAMENDAPPLY.getAttachType());
sid = entity.getSid();
} else {
// 更新操作
OaMendApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
// 处理附件
saveFiles(sid, files, OaFileEnum.OAMENDAPPLY.getAttachType());
}
// 处理附件
saveFiles(sid, files, OaFileEnum.OAMENDAPPLY.getAttachType());
return rb.success().setData(sid);
}
@ -214,21 +199,7 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
submitDto.setProcDefId(ProcDefEnum.OAMENDAPPLY.getProDefId());
//若申请单中选择了下一处理人,则需赋值给下一处理人字段
submitDto.setNextNodeUserSids("");
boolean isNew = false;
if (StringUtils.isBlank(dto.getSid())) {
isNew = true;
} else {
OaForm oaForm = oaFormService.fetchBySid(businessSid);
String businessTaskId = oaForm.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
isNew = true;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
isNew = false;
}
}
submitDto.setNew(isNew);
submitDto.setNextNodeSid(dto.getTaskId());
return oaFormService.submit(submitDto);
}
@ -242,4 +213,66 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
delBySids(sids);
return rb.success();
}
/**
* 办理同意
*
* @param dto
* @return
*/
public ResultBean complete(CompleteDto dto) {
Map<String, Object> formVariables = dto.getFormVariables();
//添加网关
// formVariables.put("", "");
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", dto.getBusinessSid());
formVariables.put("app", appMap);
dto.setFormVariables(formVariables);
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto();
BeanUtil.copyProperties(dto, businessVariablesDto);
return oaFormService.complete(businessVariablesDto);
}
/**
* 驳回
*
* @param dto
* @return
*/
public ResultBean reject(TaskDto dto) {
Map<String, Object> formVariables = dto.getFormVariables();
//添加网关
// formVariables.put("", "");
//若有移动端,则需和移动端沟通具体参数,若没有删去即可。
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", dto.getBusinessSid());
formVariables.put("app", appMap);
dto.setFormVariables(formVariables);
return oaFormService.reject(dto);
}
public ResultBean<List<NodeVo>> getPreviousNodesForReject(NodeQuery query) {
Map<String, Object> formVariables = query.getFormVariables();
//添加网关
// formVariables.put("", "");
//若有移动端,则需和移动端沟通具体参数,若没有删去即可。
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", query.getBusinessSid());
formVariables.put("app", appMap);
query.setFormVariables(formVariables);
return oaFormService.getPreviousNodesForReject(query);
}
public ResultBean<List<NodeVo>> getNextNodesForSubmit(NodeQuery query) {
Map<String, Object> formVariables = query.getFormVariables();
//添加网关
// formVariables.put("", "");
//若有移动端,则需和移动端沟通具体参数,若没有删去即可。
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", query.getBusinessSid());
formVariables.put("app", appMap);
query.setFormVariables(formVariables);
return oaFormService.getNextNodesForSubmit(query);
}
}

2
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/OrgVo.java → yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/OrgVo.java

@ -1,4 +1,4 @@
package com.yxt.anrui.oa.feign.portal.sysstafforg;
package com.yxt.anrui.oa.feign.portal.sysorganization;
import lombok.Data;

6
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
@ -32,4 +33,9 @@ public interface SysOrganizationFeign {
@ResponseBody
@GetMapping("/fetchBySid/{sid}")
public ResultBean<SysOrganizationVo> fetchBySid(@PathVariable("sid") String sid);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据用户组织全路径组织")
public ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

5
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java

@ -23,9 +23,4 @@ public interface SysStaffOrgFeign {
@ApiOperation("根据用户组织全路径获取用户的分公司sid")
ResultBean<String> getOrgSidByPath(@RequestParam("orgPath") String orgPath);
@GetMapping("/getOrgByPath")
@ResponseBody
@ApiOperation("根据用户组织全路径组织")
public ResultBean<OrgVo> getOrgByPath(@RequestParam("orgSidPath") String orgSidPath);
}

12
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java

@ -5,11 +5,14 @@ import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@Api(tags = "用户表")
@FeignClient(
contextId = "anrui-portal-SysUser",
@ -24,4 +27,13 @@ public interface SysUserFeign {
@ApiOperation("根据sid获取一条记录")
@GetMapping("/fetchBySid/{sid}")
public ResultBean<SysUserVo> fetchBySid(@PathVariable("sid") String sid);
@ApiOperation(value = "获取其他机构链角色的用户")
@GetMapping(value = "getOtherOrgRoleUser")
ResultBean<List<SysUserVo>> getOtherOrgRoleUser(@SpringQueryMap UserRoleQuery query);
@ApiOperation(value = "获取本机构链角色的用户")
@GetMapping(value = "getUserByRole")
ResultBean<List<SysUserVo>> getUserByRole(@SpringQueryMap UserQuery query);
}

21
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.oa.feign.sysuser;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/21 8:47
* @Description
*/
@Data
public class UserQuery implements Query {
private static final long serialVersionUID = -3979717077029562761L;
@ApiModelProperty(value = "角色sid必传项")
private String roleSid;
@ApiModelProperty(value = "用户部门sid路径是必传项")
private String orgSidPath;
}

19
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/UserRoleQuery.java

@ -0,0 +1,19 @@
package com.yxt.anrui.oa.feign.sysuser;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/8/25 8:38
* @Description
*/
@Data
public class UserRoleQuery implements Query {
private static final long serialVersionUID = 1913450300189800653L;
@ApiModelProperty("角色sid")
private String roleSid;
private String orgSid;
}
Loading…
Cancel
Save