Browse Source

Merge remote-tracking branch 'origin/master'

master
ligaode 5 months ago
parent
commit
1b8f31d7bf
  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. 2
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmfinanceadjustapply/ScmFinanceAdjustApplyMapper.xml
  7. 2
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmfinanceadjustapply/ScmFinanceAdjustApplyRest.java
  8. 7
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java
  9. 8
      anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatecheck.js
  10. 8
      anrui-scm/anrui-scm-ui/src/api/bikerebate/bicyclerebatewithholding.js
  11. 8
      anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatecheck.js
  12. 8
      anrui-scm/anrui-scm-ui/src/api/specialrebate/specialrebatewithholding.js
  13. 52
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatecheck/bicyclerebatecheck.vue
  14. 52
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatewithholding/bicyclerebatewithholding.vue
  15. 10
      anrui-scm/anrui-scm-ui/src/views/financialDiscount/differenceManagement/differenceManagementAdd.vue
  16. 49
      anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatecheck/specialrebatecheck.vue
  17. 50
      anrui-scm/anrui-scm-ui/src/views/specialrebate/specialrebatewithholding/specialrebatewithholding.vue
  18. 10
      anrui-scm/anrui-scm-ui/src/views/workFlow/chayitiaozhengFlow/differenceManagementEdit.vue
  19. 29
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaFormRest.java
  20. 27
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java
  21. 94
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java
  22. 66
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/BusinessVariablesDto.java
  23. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/CompleteDto.java
  24. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/DelegateDto.java
  25. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/SubmitDto.java
  26. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/flowable/TaskDto.java
  27. 99
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.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) const choose = this.actualPay_list.filter((item) => item.actualPay === value)
if (choose.length > 0 && choose !== null) { if (choose.length > 0 && choose !== null) {
row.actualPay = choose[0].actualPay row.actualPay = choose[0].actualPay
row.receiveCompany = choose[0].manufacturerName row.receiveCompany = choose[0].accountName
row.bank = choose[0].depositBank row.bank = choose[0].depositBank
row.receivingAccount = choose[0].bankAccount row.receivingAccount = choose[0].bankAccount
} else { } else {

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

@ -47,7 +47,7 @@
<div class="span-sty">付款单位</div> <div class="span-sty">付款单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8" class="tlineheightb">
<div class="span-sty">付款申请备注</div> <div class="span-sty">付款申请备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col> </el-col>
@ -352,4 +352,17 @@ export default {
.addinputInfo { .addinputInfo {
margin-left: 140px !important; 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> </style>

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

@ -49,7 +49,7 @@
<div class="span-sty">付款单位</div> <div class="span-sty">付款单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8" class="tlineheightb">
<div class="span-sty">付款申请备注</div> <div class="span-sty">付款申请备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col> </el-col>
@ -525,4 +525,17 @@ export default {
.addinputInfo { .addinputInfo {
margin-left: 140px !important; 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> </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) const choose = this.actualPay_list.filter((item) => item.actualPay === value)
if (choose.length > 0 && choose !== null) { if (choose.length > 0 && choose !== null) {
row.actualPay = choose[0].actualPay row.actualPay = choose[0].actualPay
row.receiveCompany = choose[0].manufacturerName row.receiveCompany = choose[0].accountName
row.bank = choose[0].depositBank row.bank = choose[0].depositBank
row.receivingAccount = choose[0].bankAccount row.receivingAccount = choose[0].bankAccount
} else { } else {

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

@ -47,7 +47,7 @@
<div class="span-sty">付款单位</div> <div class="span-sty">付款单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.payCompany }}</span></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8" class="tlineheightb">
<div class="span-sty">付款申请备注</div> <div class="span-sty">付款申请备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col> </el-col>
@ -394,4 +394,17 @@ export default {
.addinputInfo { .addinputInfo {
margin-left: 140px !important; 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> </style>

2
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmfinanceadjustapply/ScmFinanceAdjustApplyMapper.xml

@ -121,7 +121,7 @@
</select> </select>
<select id="selectBySid" resultType="java.lang.Integer"> <select id="selectBySid" resultType="java.lang.Integer">
SELECT COUNT(*) SELECT COUNT(*)
FROM base_internal_purchase FROM scm_finance_adjust_apply
WHERE nodeState != '待提交' WHERE nodeState != '待提交'
and find_in_set(sid, #{list}) and find_in_set(sid, #{list})
</select> </select>

2
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmfinanceadjustapply/ScmFinanceAdjustApplyRest.java

@ -95,7 +95,7 @@ public class ScmFinanceAdjustApplyRest implements ScmFinanceAdjustApplyFeign {
@Override @Override
@ApiOperation("根据sid批量删除") @ApiOperation("根据sid批量删除")
@PostMapping("/delBySids") @DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){ public ResultBean delBySids(@RequestBody String[] sids){
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
//查询该sid中是否有流程不是待提交的 //查询该sid中是否有流程不是待提交的

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

@ -648,6 +648,8 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
PagerVo<BaseVehicleRebateVo> data = baseVehicleFeign.vehicleRebateList(pq).getData(); PagerVo<BaseVehicleRebateVo> data = baseVehicleFeign.vehicleRebateList(pq).getData();
BaseVehicleRebateVo baseVehicleRebateVo = data.getRecords().get(0); BaseVehicleRebateVo baseVehicleRebateVo = data.getRecords().get(0);
ScmVehRebate scmVehRebate = new ScmVehRebate(); ScmVehRebate scmVehRebate = new ScmVehRebate();
scmVehRebate.setPurchaseSystemSid(baseVehicleRebateVo.getPurchaseSystemSid());
scmVehRebate.setPurchaseSystemName(baseVehicleRebateVo.getPurchaseSystemName());
scmVehRebate.setState(0); scmVehRebate.setState(0);
scmVehRebate.setCreateBySid(userSid); scmVehRebate.setCreateBySid(userSid);
scmVehRebate.setBrandSid(baseVehicleRebateVo.getCarBrand()); scmVehRebate.setBrandSid(baseVehicleRebateVo.getCarBrand());
@ -665,10 +667,15 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
scmVehRebate.setCalculationStandard(info.getCalculationStandard()); scmVehRebate.setCalculationStandard(info.getCalculationStandard());
if (StringUtils.isNotBlank(info.getCalculationModeValue())) { if (StringUtils.isNotBlank(info.getCalculationModeValue())) {
String calculationModeValue = info.getCalculationModeValue(); String calculationModeValue = info.getCalculationModeValue();
BigDecimal rule = new BigDecimal(info.getCalculationStandard());
if (calculationModeValue.equals("比例")) { if (calculationModeValue.equals("比例")) {
scmVehRebate.setCalculationModeKey("001"); scmVehRebate.setCalculationModeKey("001");
BigDecimal costPrice = new BigDecimal(baseVehicleRebateVo.getCostPrice());
BigDecimal m = rule.multiply(costPrice).divide(new BigDecimal("100"));
scmVehRebate.setEstimateRebate(m.toString());
} else { } else {
scmVehRebate.setCalculationModeKey("002"); scmVehRebate.setCalculationModeKey("002");
scmVehRebate.setEstimateRebate(info.getCalculationStandard());
} }
scmVehRebate.setCalculationModeValue(info.getCalculationModeValue()); scmVehRebate.setCalculationModeValue(info.getCalculationModeValue());
} }

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

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

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

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

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

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

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

@ -19,6 +19,14 @@ export default {
headers: { 'Content-Type': 'application/json' } headers: { 'Content-Type': 'application/json' }
}) })
}, },
// 重推
rePushVoucher: function(data) {
return request({
url: '/scm/v1/scmspecialrebatewithapply/rePushVoucher',
method: 'post',
params: data
})
},
// 删除 // 删除
delete: function(params) { delete: function(params) {
return request({ 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 Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye' import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar' 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 bicyclerebatecheckAdd from './bicyclerebatecheckAdd'
import bicyclerebatecheckInfo from './bicyclerebatecheckInfo' import bicyclerebatecheckInfo from './bicyclerebatecheckInfo'
import { getStorage } from '@/utils/auth' import { getStorage } from '@/utils/auth'
@ -123,6 +123,13 @@ export default {
centerDialogVisible: false, centerDialogVisible: false,
btndisabled: false, btndisabled: false,
btnList: [ btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{ {
type: 'danger', type: 'danger',
size: 'small', size: 'small',
@ -145,6 +152,7 @@ export default {
tableKey: 0, tableKey: 0,
list: [], list: [],
sids: [], sids: [],
multipleSelection: [],
FormLoading: false, FormLoading: false,
listLoading: false, listLoading: false,
brand_list: '', brand_list: '',
@ -174,7 +182,18 @@ export default {
mounted() { mounted() {
// vuewindowpostMessagehandleMessage // vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage) 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: { methods: {
async handleMessage(event) { async handleMessage(event) {
@ -231,6 +250,9 @@ export default {
btnHandle(btnKey) { btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey) console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) { switch (btnKey) {
case 'toRepush':
this.toRepush()
break
case 'doDel': case 'doDel':
this.doDel() this.doDel()
break break
@ -249,11 +271,11 @@ export default {
}, },
handleSelectionChange(row) { handleSelectionChange(row) {
const aa = [] const aa = []
this.multipleSelection = row
row.forEach((element) => { row.forEach((element) => {
aa.push(element.sid) aa.push(element.sid)
}) })
this.sids = aa this.sids = aa
console.log('sids', this.sids)
}, },
// //
getList() { getList() {
@ -301,6 +323,30 @@ export default {
} }
this.init() 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() { handleClick() {
this.$parent.resetState() this.$parent.resetState()
this.$parent.handleReset() this.$parent.handleReset()

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

@ -94,7 +94,7 @@ import req from '@/api/bikerebate/bicyclerebatewithholding'
import Pagination from '@/components/pagination' import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye' import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar' import ButtonBar from '@/components/ButtonBar'
import { getOrgSidByPath } from '@/api/cheliang/dictcommons' import { getButtonPermissions, getOrgSidByPath } from '@/api/cheliang/dictcommons'
import bicyclerebatewithholdingAdd from './bicyclerebatewithholdingAdd' import bicyclerebatewithholdingAdd from './bicyclerebatewithholdingAdd'
import bicyclerebatewithholdingInfo from './bicyclerebatewithholdingInfo' import bicyclerebatewithholdingInfo from './bicyclerebatewithholdingInfo'
import { getStorage } from '@/utils/auth' import { getStorage } from '@/utils/auth'
@ -122,6 +122,13 @@ export default {
btnKey: 'toAdd', btnKey: 'toAdd',
btnLabel: '新增' btnLabel: '新增'
}, },
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{ {
type: 'danger', type: 'danger',
size: 'small', size: 'small',
@ -144,6 +151,7 @@ export default {
tableKey: 0, tableKey: 0,
list: [], list: [],
sids: [], sids: [],
multipleSelection: [],
FormLoading: false, FormLoading: false,
listLoading: false, listLoading: false,
listQuery: { listQuery: {
@ -176,7 +184,18 @@ export default {
mounted() { mounted() {
// vuewindowpostMessagehandleMessage // vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage) 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: { methods: {
async handleMessage(event) { async handleMessage(event) {
@ -231,6 +250,9 @@ export default {
case 'toAdd': case 'toAdd':
this.toAdd() this.toAdd()
break break
case 'toRepush':
this.toRepush()
break
case 'doDel': case 'doDel':
this.doDel() this.doDel()
break break
@ -249,11 +271,11 @@ export default {
}, },
handleSelectionChange(row) { handleSelectionChange(row) {
const aa = [] const aa = []
this.multipleSelection = row
row.forEach((element) => { row.forEach((element) => {
aa.push(element.sid) aa.push(element.sid)
}) })
this.sids = aa this.sids = aa
console.log('sids', this.sids)
}, },
// //
getList() { getList() {
@ -305,6 +327,30 @@ export default {
this.viewState = 2 this.viewState = 2
this.$refs['divAdd'].showAdd(this.listQuery.params.createOrgSid) this.$refs['divAdd'].showAdd(this.listQuery.params.createOrgSid)
}, },
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) { toEdit(row) {
this.viewState = 3 this.viewState = 3
this.$refs['divAdd'].showEdit(row) this.$refs['divAdd'].showEdit(row)

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

@ -263,8 +263,18 @@ export default {
const choose = this.adjustWay_list.filter((item) => item.dictKey === value) const choose = this.adjustWay_list.filter((item) => item.dictKey === value)
if (choose !== null) { if (choose !== null) {
this.formobj.adjustWay = choose[0].dictValue this.formobj.adjustWay = choose[0].dictValue
if (this.formobj.adjustWay === '公司认损') {
this.formobj.staffName = ''
this.formobj.staffSid = ''
this.formobj.salesManage = ''
this.formobj.salesManageSid = ''
}
} else { } else {
this.formobj.adjustWay = '' this.formobj.adjustWay = ''
this.formobj.staffName = ''
this.formobj.staffSid = ''
this.formobj.salesManage = ''
this.formobj.salesManageSid = ''
} }
}, },
changeStaff(value) { changeStaff(value) {

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 Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye' import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar' import ButtonBar from '@/components/ButtonBar'
import { getOrgSidByPath } from '@/api/cheliang/dictcommons' import { getButtonPermissions } from '@/api/cheliang/dictcommons'
import specialrebatecheckAdd from './specialrebatecheckAdd' import specialrebatecheckAdd from './specialrebatecheckAdd'
import specialrebatecheckInfo from './specialrebatecheckInfo' import specialrebatecheckInfo from './specialrebatecheckInfo'
import { getStorage } from '@/utils/auth' import { getStorage } from '@/utils/auth'
@ -123,6 +123,13 @@ export default {
centerDialogVisible: false, centerDialogVisible: false,
btndisabled: false, btndisabled: false,
btnList: [ btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{ {
type: 'danger', type: 'danger',
size: 'small', size: 'small',
@ -145,6 +152,7 @@ export default {
tableKey: 0, tableKey: 0,
list: [], list: [],
sids: [], sids: [],
multipleSelection: [],
FormLoading: false, FormLoading: false,
listLoading: false, listLoading: false,
listQuery: { listQuery: {
@ -172,7 +180,18 @@ export default {
mounted() { mounted() {
// vuewindowpostMessagehandleMessage // vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage) 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: { methods: {
async handleMessage(event) { async handleMessage(event) {
@ -233,11 +252,11 @@ export default {
}, },
handleSelectionChange(row) { handleSelectionChange(row) {
const aa = [] const aa = []
this.multipleSelection = row
row.forEach((element) => { row.forEach((element) => {
aa.push(element.sid) aa.push(element.sid)
}) })
this.sids = aa this.sids = aa
console.log('sids', this.sids)
}, },
// //
getList() { getList() {
@ -284,6 +303,30 @@ export default {
} }
this.getList() 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() { handleClick() {
this.$parent.resetState() this.$parent.resetState()
this.$parent.handleReset() 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 specialrebatewithholdingAdd from './specialrebatewithholdingAdd'
import specialrebatewithholdingInfo from './specialrebatewithholdingInfo' import specialrebatewithholdingInfo from './specialrebatewithholdingInfo'
import { getStorage } from '@/utils/auth' import { getStorage } from '@/utils/auth'
import { getButtonPermissions } from '@/api/cheliang/dictcommons'
export default { export default {
name: 'ZhuanXiangFanLiYuTi', name: 'ZhuanXiangFanLiYuTi',
@ -121,6 +122,13 @@ export default {
btnKey: 'toAdd', btnKey: 'toAdd',
btnLabel: '新增' btnLabel: '新增'
}, },
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRepush',
btnLabel: '重推'
},
{ {
type: 'danger', type: 'danger',
size: 'small', size: 'small',
@ -143,6 +151,7 @@ export default {
tableKey: 0, tableKey: 0,
list: [], list: [],
sids: [], sids: [],
multipleSelection: [],
FormLoading: false, FormLoading: false,
listLoading: false, listLoading: false,
listQuery: { listQuery: {
@ -174,7 +183,18 @@ export default {
mounted() { mounted() {
// vuewindowpostMessagehandleMessage // vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage) 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: { methods: {
async handleMessage(event) { async handleMessage(event) {
@ -238,11 +258,11 @@ export default {
}, },
handleSelectionChange(row) { handleSelectionChange(row) {
const aa = [] const aa = []
this.multipleSelection = row
row.forEach((element) => { row.forEach((element) => {
aa.push(element.sid) aa.push(element.sid)
}) })
this.sids = aa this.sids = aa
console.log('sids', this.sids)
}, },
// //
getList() { getList() {
@ -253,7 +273,7 @@ export default {
req.listPage(this.listQuery).then((response) => { req.listPage(this.listQuery).then((response) => {
console.log('列表查询结果:', response) console.log('列表查询结果:', response)
this.listLoading = false this.listLoading = false
if (response.success && response.data && response.data.total > 0) { if (response.success) {
this.list = response.data.records this.list = response.data.records
this.listQuery.total = response.data.total this.listQuery.total = response.data.total
} else { } else {
@ -293,6 +313,30 @@ export default {
this.viewState = 2 this.viewState = 2
this.$refs['divAdd'].showAdd() 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) { toEdit(row) {
this.viewState = 3 this.viewState = 3
this.$refs['divAdd'].showEdit(row) this.$refs['divAdd'].showEdit(row)

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

@ -245,8 +245,18 @@ export default {
const choose = this.adjustWay_list.filter((item) => item.dictKey === value) const choose = this.adjustWay_list.filter((item) => item.dictKey === value)
if (choose !== null) { if (choose !== null) {
this.formobj.adjustWay = choose[0].dictValue this.formobj.adjustWay = choose[0].dictValue
if (this.formobj.adjustWay === '公司认损') {
this.formobj.staffName = ''
this.formobj.staffSid = ''
this.formobj.salesManage = ''
this.formobj.salesManageSid = ''
}
} else { } else {
this.formobj.adjustWay = '' this.formobj.adjustWay = ''
this.formobj.staffName = ''
this.formobj.staffSid = ''
this.formobj.salesManage = ''
this.formobj.salesManageSid = ''
} }
}, },
changeStaff(value) { changeStaff(value) {

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

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

@ -1,19 +1,15 @@
package com.yxt.anrui.oa.biz.oaform; package com.yxt.anrui.oa.biz.oaform;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.oa.biz.oaform.flowable.*; 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.BillNo;
import com.yxt.anrui.oa.feign.base.Rule; 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.BusinessVariables;
import com.yxt.anrui.oa.feign.flowable.flow.FlowableFeign; 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.flow.UpdateFlowFieldVo;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery; import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign; import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign;
@ -37,7 +33,6 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -164,17 +159,12 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return baseMapper.updateFlowFiled(map); return baseMapper.updateFlowFiled(map);
} }
public ResultBean complete(BusinessVariables bv) { public ResultBean complete(BusinessVariablesDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
String formSid = bv.getFormVariables().get("formSid").toString(); BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
String businessSid = bv.getBusinessSid(); String businessSid = bv.getBusinessSid();
OaForm oaForm = fetchBySid(formSid); OaForm oaForm = fetchBySid(businessSid);
//添加网关
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(); SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath()); bv.setOrgSidPath(deptVo.getOrgSidPath());
bv.setModelId(oaForm.getProcDefId()); bv.setModelId(oaForm.getProcDefId());
@ -185,8 +175,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
} }
UpdateFlowFieldVo ufVo = resultBean.getData(); UpdateFlowFieldVo ufVo = resultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto(); OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();
BeanUtil.copyProperties(ufVo, oaFormFlowDto, "sid"); BeanUtil.copyProperties(ufVo, oaFormFlowDto);
oaFormFlowDto.setSid(formSid);
updateFlow(oaFormFlowDto); updateFlow(oaFormFlowDto);
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
@ -209,7 +198,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
ufVo.setProcDefId(oaForms.getProcDefId()); ufVo.setProcDefId(oaForms.getProcDefId());
ufVo.setProcInsId(oaForms.getProcInstId()); ufVo.setProcInsId(oaForms.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo); messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap); messageFlowableQuery.setAppMap((Map<String, Object>) bv.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(businessSid); messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName(oaForms.getFormType()); messageFlowableQuery.setModuleName(oaForms.getFormType());
messageFlowableQuery.setMsgContent(oaForms.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); messageFlowableQuery.setMsgContent(oaForms.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
@ -265,30 +254,25 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
} }
public ResultBean reject(TaskQuery query) { public ResultBean reject(TaskDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid(); String businessSid = dto.getBusinessSid();
OaForm oaForm = fetchBySid(businessSid); OaForm oaForm = fetchBySid(businessSid);
if (oaForm == null) { if (oaForm == null) {
return rb.setMsg("该申请不存在"); return rb.setMsg("该申请不存在");
} }
String businessTaskId = oaForm.getTaskId(); String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) { if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) { if (businessTaskId.equals(dto.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) { if (StringUtils.isBlank(dto.getComment())) {
return rb.setMsg("请填写意见"); return rb.setMsg("请填写意见");
} }
if (StringUtils.isBlank(query.getUserSid())) { if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid"); return rb.setMsg("参数错误:userSid");
} }
FlowTaskVo flowTaskVo = new FlowTaskVo(); FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo); BeanUtil.copyProperties(dto, flowTaskVo);
Map<String, Object> variables = new HashMap<>(); Map<String, Object> variables = dto.getFormVariables();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//网关
flowTaskVo.setValues(variables); flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo); ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) { if (!resultBean.getSuccess()) {
@ -316,7 +300,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
ufVo.setProcInsId(oaForms.getProcInstId()); ufVo.setProcInsId(oaForms.getProcInstId());
ufVo.setProcDefId(oaForms.getProcDefId()); ufVo.setProcDefId(oaForms.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo); messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap); messageFlowableQuery.setAppMap((Map<String, Object>) dto.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(businessSid); messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName(oaForms.getFormType()); messageFlowableQuery.setModuleName(oaForms.getFormType());
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(oaForms.getProcInstId()); ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(oaForms.getProcInstId());
@ -340,17 +324,17 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败!提交的数据不一致!"); return rb.setMsg("操作失败!提交的数据不一致!");
} }
public ResultBean revokeProcess(TaskQuery query) { public ResultBean revokeProcess(TaskDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) { if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid"); return rb.setMsg("参数错误:userSid");
} }
OaForm oaForm = fetchBySid(query.getBusinessSid()); OaForm oaForm = fetchBySid(dto.getBusinessSid());
String businessTaskId = oaForm.getTaskId(); String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) { if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) { if (businessTaskId.equals(dto.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo(); FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo); BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo); ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) { if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg()); return rb.setMsg(resultBean.getMsg());
@ -364,23 +348,23 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败,提交的数据不一致!"); return rb.setMsg("操作失败,提交的数据不一致!");
} }
public ResultBean breakProcess(TaskQuery query) { public ResultBean breakProcess(TaskDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) { if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId"); return rb.setMsg("参数错误:instanceId");
} }
if (StringUtils.isBlank(query.getUserSid())) { if (StringUtils.isBlank(dto.getUserSid())) {
return rb.setMsg("参数错误:userSid"); return rb.setMsg("参数错误:userSid");
} }
if (StringUtils.isBlank(query.getComment())) { if (StringUtils.isBlank(dto.getComment())) {
return rb.setMsg("请填写意见"); return rb.setMsg("请填写意见");
} }
OaForm oaForm = fetchBySid(query.getBusinessSid()); OaForm oaForm = fetchBySid(dto.getBusinessSid());
String businessTaskId = oaForm.getTaskId(); String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) { if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(oaForm.getCreateBySid())) { if (dto.getUserSid().equals(oaForm.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo(); FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo); BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) { if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg()); return rb.setMsg(resultBean.getMsg());
@ -390,9 +374,9 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
updateFlow(oaFormFlowDto); updateFlow(oaFormFlowDto);
return rb.success().setData(resultBean.getData()); return rb.success().setData(resultBean.getData());
} else { } else {
if (businessTaskId.equals(query.getTaskId())) { if (businessTaskId.equals(dto.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo(); FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo); BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo); ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) { if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg()); return rb.setMsg(resultBean.getMsg());
@ -407,18 +391,18 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
return rb.setMsg("操作失败!提交的数据不一致!"); return rb.setMsg("操作失败!提交的数据不一致!");
} }
public ResultBean delegate(DelegateQuery query) { public ResultBean delegate(DelegateDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery); BeanUtil.copyProperties(dto, delegateQuery);
flowFeign.delegate(delegateQuery); flowFeign.delegate(delegateQuery);
return rb.success(); return rb.success();
} }
public ResultBean assignTask(DelegateQuery query) { public ResultBean assignTask(DelegateDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery); BeanUtil.copyProperties(dto, delegateQuery);
flowFeign.assignTask(delegateQuery); flowFeign.assignTask(delegateQuery);
return rb.success(); return rb.success();
} }
@ -508,7 +492,9 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
bv.setTaskDefKey(oaForm.getNodeId()); bv.setTaskDefKey(oaForm.getNodeId());
bv.setComment("重新提交"); bv.setComment("重新提交");
bv.setInstanceId(oaForm.getProcInstId()); bv.setInstanceId(oaForm.getProcInstId());
return complete(bv); BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto();
BeanUtil.copyProperties(bv, businessVariablesDto);
return complete(businessVariablesDto);
} }
return rb; return rb;
@ -516,11 +502,13 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
private synchronized int submitBusinessData(SubmitDto dto) { private synchronized int submitBusinessData(SubmitDto dto) {
int r = 0; int r = 0;
if (dto.isNew()) { OaForm oaForm = fetchBySid(dto.getBusinessSid());
if (StringUtils.isBlank(oaForm.getTaskId()) && StringUtils.isBlank(dto.getNextNodeSid())) {
//新提交
r = 1; r = 1;
} else { } else if (StringUtils.isNotBlank(oaForm.getTaskId()) && oaForm.getTaskId().equals(dto.getNextNodeSid())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2; r = 2;
} }
return r; return r;
} }
@ -551,8 +539,10 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
bv.setNextNodeUserSids(organizationVo.getManagerSid()); bv.setNextNodeUserSids(organizationVo.getManagerSid());
} else if (rule == OaFormRuleEnum.INSTITUTION.getRule()) { } else if (rule == OaFormRuleEnum.INSTITUTION.getRule()) {
//获取本机构链(含集团、事业部、分公司部门)中角色的用户(角色sid,发起人orgsidPath)
} else if (rule == OaFormRuleEnum.OTHER_INSTITUTION.getRule()) { } else if (rule == OaFormRuleEnum.OTHER_INSTITUTION.getRule()) {
//获取其他机构链角色的用户(角色sid,机构sid])
} else { } else {
bv.setNextNodeUserSids(""); bv.setNextNodeUserSids("");

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

@ -0,0 +1,66 @@
package com.yxt.anrui.oa.biz.oaform.flowable;
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;
/**
* 流程实例的id
*/
private String instanceId;
/**
* 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<>();
}

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") @ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId") @NotBlank(message = "参数错误:taskId")
private String taskId; private String taskId;
@ApiModelProperty(value = "流程id(PC)") @ApiModelProperty(value = "流程实例id")
private String instanceId;
@ApiModelProperty(value = "流程id(移动)")
private String procInsId; private String procInsId;
@ApiModelProperty(value = "意见") @ApiModelProperty(value = "意见")
private String comment; private String comment;

2
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,7 +9,7 @@ import lombok.Data;
* @date: 2025/1/9 * @date: 2025/1/9
**/ **/
@Data @Data
public class DelegateQuery { public class DelegateDto {
@ApiModelProperty @ApiModelProperty
private String userSid; private String userSid;

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; private String nextNodeUserSids;
@ApiModelProperty("下一处理人获取规则") @ApiModelProperty("下一处理人获取规则")
private int rule; private int rule;
@ApiModelProperty("是否是首次提交") // @ApiModelProperty("是否是首次提交")
private boolean isNew; // private boolean isNew;
@ApiModelProperty("任务id")
private String nextNodeSid;
} }

2
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 * @date: 2025/1/9
**/ **/
@Data @Data
public class TaskQuery { public class TaskDto {
/** /**
* 终止驳回撤回 * 终止驳回撤回

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 cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.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.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.OaFormDto;
import com.yxt.anrui.oa.biz.oaform.OaFormService; 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.*;
import com.yxt.anrui.oa.biz.oaform.flowable.SubmitDto;
import com.yxt.anrui.oa.feign.file.OaFileEnum; 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.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.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 org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil; 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.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.concurrent.*;
@Service @Service
public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, OaMendApply> { public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, OaMendApply> {
@ -164,18 +152,15 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
entity.setFormSid(resultBean.getData()); entity.setFormSid(resultBean.getData());
baseMapper.insert(entity); baseMapper.insert(entity);
// 处理附件
saveFiles(sid, files, OaFileEnum.OAMENDAPPLY.getAttachType());
sid = entity.getSid(); sid = entity.getSid();
} else { } else {
// 更新操作 // 更新操作
OaMendApply entity = fetchBySid(sid); OaMendApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid"); BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity); baseMapper.updateById(entity);
// 处理附件
saveFiles(sid, files, OaFileEnum.OAMENDAPPLY.getAttachType());
} }
// 处理附件
saveFiles(sid, files, OaFileEnum.OAMENDAPPLY.getAttachType());
return rb.success().setData(sid); return rb.success().setData(sid);
} }
@ -214,21 +199,7 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
submitDto.setProcDefId(ProcDefEnum.OAMENDAPPLY.getProDefId()); submitDto.setProcDefId(ProcDefEnum.OAMENDAPPLY.getProDefId());
//若申请单中选择了下一处理人,则需赋值给下一处理人字段 //若申请单中选择了下一处理人,则需赋值给下一处理人字段
submitDto.setNextNodeUserSids(""); submitDto.setNextNodeUserSids("");
boolean isNew = false; submitDto.setNextNodeSid(dto.getTaskId());
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);
return oaFormService.submit(submitDto); return oaFormService.submit(submitDto);
} }
@ -242,4 +213,66 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
delBySids(sids); delBySids(sids);
return rb.success(); 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);
}
} }
Loading…
Cancel
Save