diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java index 63da1347e7..4aeebbbbcc 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java @@ -37,6 +37,7 @@ public enum BillTypeEnum { JCECQRD("JCECQRD", "交车资料二次确认单"), HKSQ("HKSQ", "划扣申请单据编号"), DSDFSQ("DSDFSQ", "代收代付申请单据编号"), + YHJT("YHJT", "月还计提单据编号"), FKCEQRSQ("FKCEQRSQ", "放款差额确认申请"); diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java index ab84a617e5..ed27ce90b4 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java @@ -23,6 +23,7 @@ public enum LoanFileEnum { BUCKLE_APPLY("014", "划扣申请附件"), BEPADSINCERE("015", "逾期垫款附件"), TRANSFERPAYMENT("016", "代收代付附件"), + ACCRUALAPPLY("017", "月还计提附件"), ; diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java index c7e5d59506..c1478e0bcf 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java @@ -3,6 +3,7 @@ package com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply; import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*; +import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.TransferDelegateQuery; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -15,5 +16,75 @@ import java.util.List; public class LoanMonthlyAccrualApplyFallback implements LoanMonthlyAccrualApplyFeign { + @Override + public ResultBean accrualInit(String orgPath) { + return null; + } + + @Override + public ResultBean saveAccrual(LoanMonthlyAccrualApplyDto dto) { + return null; + } + + @Override + public ResultBean> listPage(PagerQuery pq) { + return null; + } + + @Override + public ResultBean accrualDetails(String sid) { + return null; + } + + @Override + public ResultBean deleteBySids(String[] sids) { + return null; + } + + @Override + public ResultBean submitRecordApplication(SubmitAccrualDto dto) { + return null; + } + + @Override + public ResultBean complete(AccrualCompleteDto dto) { + return null; + } + + @Override + public ResultBean revokeProcess(AccrualTaskQuery query) { + return null; + } + + @Override + public ResultBean taskReject(AccrualTaskQuery query) { + return null; + } + + @Override + public ResultBean breakProcess(AccrualTaskQuery query) { + return null; + } + + @Override + public ResultBean flowRecord(String procInsId) { + return null; + } + + @Override + public ResultBean> getNextNodesForSubmit(AccrualGetNodeQuery query) { + return null; + } + + @Override + public ResultBean> getPreviousNodesForReject(AccrualGetNodeQuery query) { + return null; + } + + @Override + public ResultBean delegate(AccrualDelegateQuery query) { + return null; + } + } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java index b31072c3b5..5c2224a379 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java @@ -1,7 +1,19 @@ package com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*; +import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** @@ -17,6 +29,65 @@ import org.springframework.cloud.openfeign.FeignClient; fallback = LoanMonthlyAccrualApplyFallback.class) public interface LoanMonthlyAccrualApplyFeign { + @ApiOperation("新增初始化") + @GetMapping("/accrualInit") + @ResponseBody + public ResultBean accrualInit(@RequestParam("orgPath") String orgPath); + + @ApiOperation("保存修改") + @PostMapping("/saveAccrual") + @ResponseBody + public ResultBean saveAccrual(@RequestBody LoanMonthlyAccrualApplyDto dto); + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("详情查看") + @GetMapping("/accrualDetails") + @ResponseBody + public ResultBean accrualDetails(@RequestParam("sid") String sid); + + @ApiOperation("批量删除") + @DeleteMapping("/deleteBySids") + @ResponseBody + public ResultBean deleteBySids(@RequestBody String[] sids); + + //---------------------------流程--------------------------------------- + + @ApiOperation("提交") + @PostMapping("/submit") + public ResultBean submitRecordApplication(@RequestBody @Valid SubmitAccrualDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody AccrualCompleteDto dto); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody AccrualTaskQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody AccrualTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@RequestBody AccrualTaskQuery query); + + @ApiOperation(value = "流程历史流转记录") + @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}") + public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap AccrualGetNodeQuery query); + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap AccrualGetNodeQuery query); + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody AccrualDelegateQuery query); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyVo.java index 3cc3d2e85e..9fcb93945c 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyVo.java @@ -32,5 +32,4 @@ public class LoanMonthlyAccrualApplyVo implements Vo { @ApiModelProperty("备注") private String remarks; // 备注 - } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyPlanRecord.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyPlanRecord.java index 6e55d66f59..71bdcbbf5b 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyPlanRecord.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyPlanRecord.java @@ -18,8 +18,6 @@ public class LoanMonthlyPlanRecord { private String bankName; @ApiModelProperty("资方合同") private String bankContractNo; - @ApiModelProperty("客户") - private String customer; @ApiModelProperty("借款人名称") private String borrowerName; @ApiModelProperty("期数") diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.java index bdb208ecb6..7971418fc6 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.java @@ -7,18 +7,25 @@ import com.baomidou.mybatisplus.core.toolkit.Constants; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyVo; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApplyVo; +import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; import java.util.Map; @Mapper public interface LoanMonthlyAccrualApplyMapper extends BaseMapper { + List selByNewDate(@Param(Constants.WRAPPER) QueryWrapper qw); + + List selRepaymentDetailsByDueDate(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + int selectNum(String bill); + + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + int updateFlowFiled(Map map); -// IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); -// -// int updateFlowFiled(Map map); -// -// int selectNum(String bill); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.xml index 8caad1e277..d33cee2d49 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyMapper.xml @@ -2,7 +2,7 @@ - UPDATE loan_buckle_apply + UPDATE loan_monthly_accrual_apply SET nodeState=#{nodeState} , nodeSid=#{taskDefKey} @@ -17,7 +17,7 @@ WHERE sid = #{sid} - SELECT sid, nodeState, @@ -29,14 +29,32 @@ billNo, procDefId, procInstId - FROM loan_buckle_apply + FROM loan_monthly_accrual_apply ${ew.sqlSegment} + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java index 60d7349232..8f348986ad 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java @@ -3,10 +3,8 @@ package com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualapply; import cn.hutool.core.bean.BeanUtil; import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.*; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; -import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApplyFeign; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.*; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -26,82 +24,80 @@ public class LoanMonthlyAccrualApplyRest implements LoanMonthlyAccrualApplyFeign @Autowired LoanMonthlyAccrualApplyService loanMonthlyAccrualApplyService; -// @Override -// public ResultBean> listPage(PagerQuery pq) { -// ResultBean> rb = ResultBean.fireFail(); -// PagerVo pv = loanBuckleApplyService.listPage(pq); -// return rb.success().setData(pv); -// } -// -// @Override -// public ResultBean buckleInit(String[] sids) { -// return loanBuckleApplyService.buckleInit(sids); -// } -// -// -// -// @Override -// public ResultBean saveBuckle(LoanBuckleApplyDto dto) { -// return loanBuckleApplyService.saveBuckle(dto); -// } -// -// @Override -// public ResultBean buckleDetails(String sid) { -// return loanBuckleApplyService.buckleDetails(sid); -// } -// -// @Override -// public ResultBean deleteBySids(String[] sids) { -// return loanBuckleApplyService.deleteBySids(sids); -// } - -// @Override -// public ResultBean submitRecordApplication(SubmitBuckleDto dto) { -// return loanBuckleApplyService.submitRecordApplication(dto); -// } -// -// @Override -// public ResultBean complete(BuckleCompleteDto dto) { -// BusinessVariables bv = new BusinessVariables(); -// BeanUtil.copyProperties(dto, bv); -// bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId()); -// return loanBuckleApplyService.complete(bv); -// } -// -// @Override -// public ResultBean revokeProcess(BuckleTaskQuery query) { -// return loanBuckleApplyService.revokeProcess(query); -// } -// -// @Override -// public ResultBean taskReject(BuckleTaskQuery query) { -// return loanBuckleApplyService.taskReject(query); -// } -// -// @Override -// public ResultBean breakProcess(BuckleTaskQuery query) { -// return loanBuckleApplyService.breakProcess(query); -// } -// -// @Override -// public ResultBean flowRecord(String procInsId) { -// return loanBuckleApplyService.flowRecord(procInsId); -// } -// -// @Override -// public ResultBean> getNextNodesForSubmit(BuckleGetNodeQuery query) { -// return loanBuckleApplyService.getNextNodesForSubmit(query); -// } -// -// @Override -// public ResultBean> getPreviousNodesForReject(BuckleGetNodeQuery query) { -// return loanBuckleApplyService.getPreviousNodesForReject(query); -// } -// -// @Override -// public ResultBean delegate(BuckleDelegateQuery query) { -// return loanBuckleApplyService.delegate(query); -// } + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanMonthlyAccrualApplyService.listPage(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean accrualInit(String orgPath) { + return loanMonthlyAccrualApplyService.accrualInit(orgPath); + } + + @Override + public ResultBean saveAccrual(LoanMonthlyAccrualApplyDto dto) { + return loanMonthlyAccrualApplyService.saveAccrual(dto); + } + + @Override + public ResultBean accrualDetails(String sid) { + return loanMonthlyAccrualApplyService.accrualDetails(sid); + } + + @Override + public ResultBean deleteBySids(String[] sids) { + return loanMonthlyAccrualApplyService.deleteBySids(sids); + } + + @Override + public ResultBean submitRecordApplication(SubmitAccrualDto dto) { + return loanMonthlyAccrualApplyService.submitRecordApplication(dto); + } + + @Override + public ResultBean complete(AccrualCompleteDto dto) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(dto, bv); + bv.setModelId(ProcDefEnum.MONTHLYACCRUAL.getProDefId()); + return loanMonthlyAccrualApplyService.complete(bv); + } + + @Override + public ResultBean revokeProcess(AccrualTaskQuery query) { + return loanMonthlyAccrualApplyService.revokeProcess(query); + } + + @Override + public ResultBean taskReject(AccrualTaskQuery query) { + return loanMonthlyAccrualApplyService.taskReject(query); + } + + @Override + public ResultBean breakProcess(AccrualTaskQuery query) { + return loanMonthlyAccrualApplyService.breakProcess(query); + } + + @Override + public ResultBean flowRecord(String procInsId) { + return loanMonthlyAccrualApplyService.flowRecord(procInsId); + } + + @Override + public ResultBean> getNextNodesForSubmit(AccrualGetNodeQuery query) { + return loanMonthlyAccrualApplyService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean> getPreviousNodesForReject(AccrualGetNodeQuery query) { + return loanMonthlyAccrualApplyService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean delegate(AccrualDelegateQuery query) { + return loanMonthlyAccrualApplyService.delegate(query); + } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java index ea51c0c92a..44286a7900 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java @@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualapply; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; +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; @@ -25,21 +26,20 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.*; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppRecordVo; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; -import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; -import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; -import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory; -import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.*; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; +import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService; import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService; +import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; +import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.DateUtils; import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -52,6 +52,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.*; @@ -76,8 +77,6 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService listPage(PagerQuery pq) { -// IPage page = PagerUtil.queryToPage(pq); -// LoanBuckleApplyQuery pagerQuery = pq.getParams(); -// QueryWrapper qw = new QueryWrapper<>(); -// //======================= -// PrivilegeQuery privilegeQuery = new PrivilegeQuery(); -// privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); -// privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); -// privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); -// privilegeQuery.setUserSid(pagerQuery.getUserSid()); -// ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); -// if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { -// //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) -// String orgSidPath = pagerQuery.getOrgPath(); -// orgSidPath = orgSidPath + "/"; -// int i1 = orgSidPath.indexOf("/"); -// int i2 = orgSidPath.indexOf("/", i1 + 1); -// int i3 = orgSidPath.indexOf("/", i2 + 1); -// int i4 = orgSidPath.indexOf("/", i3 + 1); -// String orgLevelKey = defaultIdReltBean.getData(); -// if ("1".equals(orgLevelKey)) { -// orgSidPath = orgSidPath.substring(0, i1); -// qw.like("orgSidPath", orgSidPath); -// } else if ("2".equals(orgLevelKey)) { -// orgSidPath = orgSidPath.substring(0, i2); -// qw.like("orgSidPath", orgSidPath); -// } else if ("3".equals(orgLevelKey)) { -// orgSidPath = orgSidPath.substring(0, i3); -// qw.like("orgSidPath", orgSidPath); -// } else if ("4".equals(orgLevelKey)) { -// orgSidPath = orgSidPath.substring(0, i4); -// qw.like("orgSidPath", orgSidPath); -// } else if ("5".equals(orgLevelKey)) { -// qw.eq("createBySid", pagerQuery.getUserSid()); -// } else { -// PagerVo p = new PagerVo<>(); -// return p; -// } -// } else { -// PagerVo p = new PagerVo<>(); -// return p; -// } -// //======================= -// //分公司 -// if (StringUtils.isNotBlank(pagerQuery.getCompany())) { -// qw.like("useOrgName", pagerQuery.getCompany()); -// } -// //申请人 -// if (StringUtils.isNotBlank(pagerQuery.getApplyName())) { -// qw.like("applyName", pagerQuery.getApplyName()); -// } -// //申请编号 -// if (StringUtils.isNotBlank(pagerQuery.getBillNo())) { -// qw.like("billNo", pagerQuery.getBillNo()); -// } -// String applyStartTime = pagerQuery.getApplyStartDate(); -// String applyEndTime = pagerQuery.getApplyEndDate(); -// qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')"). -// apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')" -// ); -// qw.eq("isDelete", 0); -// qw.orderByDesc("createTime"); -// IPage pagging = baseMapper.listPage(page, qw); -// PagerVo p = PagerUtil.pageToVo(pagging, null); -// return p; -// } -// -// public ResultBean buckleInit(String[] sids) { -// ResultBean rb = ResultBean.fireFail(); -// LoanBuckleApplyInit vo = new LoanBuckleApplyInit(); -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); -// vo.setApplyDate(sdf.format(new Date())); -// List historyRecords = new ArrayList<>(); -// for (String sid : sids) { -// LoanBuckleHistoryRecord record = new LoanBuckleHistoryRecord(); -// LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(sid).getData(); -// if (null != recordVo) { -// BeanUtil.copyProperties(recordVo, record); -// } -// historyRecords.add(record); -// } -// vo.setRecords(historyRecords); -// return rb.success().setData(vo); -// } -// -// -// -// -// /** -// * 生成申请单单据编号 -// * -// * @param orgSid -// * @return -// */ -// public String getApplyCode(String orgSid) { -// //获取分公司sid -// ResultBean resultBean1 = sysOrganizationFeign.fetchBySid(orgSid); -// String orgCode = resultBean1.getData().getOrgCode(); -// BillNo b = new BillNo(); -// b.setOrgCode(orgCode); -// b.setBillType(BillTypeEnum.HKSQ.getBillType()); -// String bill = Rule.getBill(b); -// int i = baseMapper.selectNum(bill); -// String billNo = Rule.getBillNo(bill, i); -// return billNo; -// } -// -// @Transactional(rollbackFor = Exception.class) -// public ResultBean saveBuckle(LoanBuckleApplyDto dto) { -// ResultBean rb = ResultBean.fireFail(); -// String sid = ""; -// if (StringUtils.isNotBlank(dto.getSid())) { -// sid = dto.getSid(); -// LoanBuckleApply updateEntity = fetchBySid(sid); -// if (null != updateEntity) { -// BeanUtil.copyProperties(dto, updateEntity, "id", "sid"); -// baseMapper.updateById(updateEntity); -// loanBuckleApplyRecordService.deleteByMainSid(sid); -// //删除附件表中关于该linkSid的文件 -// loanFileService.deleteByLinkSid(sid); -// List filess = dto.getFiles(); -// if (!filess.isEmpty()) { -// List files = new ArrayList<>(); -// for (LoanBuckleFile file : filess) { -// files.add(file.getUrl()); -// } -// loanFileService.saveAll(sid, files, LoanFileEnum.BUCKLE_APPLY.getAttachType()); -// } -// List records = dto.getRecords(); -// if (!records.isEmpty()) { -// for (LoanBuckleHistoryRecord record : records) { -// LoanBuckleApplyRecord applyRecord = new LoanBuckleApplyRecord(); -// applyRecord.setMainSid(sid); -// applyRecord.setRepaymentHistorySid(record.getRecordSid()); -// loanBuckleApplyRecordService.insert(applyRecord); -// } -// } -// } -// } else { -// LoanBuckleApply loanBuckleApply = new LoanBuckleApply(); -// sid = loanBuckleApply.getSid(); -// BeanUtil.copyProperties(dto, loanBuckleApply, "id", "sid"); -// loanBuckleApply.setCreateBySid(dto.getUserSid()); -// loanBuckleApply.setOrgSidPath(dto.getOrgPath()); -// ResultBean orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()); -// if (orgSidByPath.getSuccess()) { -// String userOrgSid = orgSidByPath.getData(); -// loanBuckleApply.setUseOrgSid(userOrgSid); -// String billNo = getApplyCode(userOrgSid); -// loanBuckleApply.setBillNo(billNo); -// ResultBean organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid); -// if (organizationVo.getSuccess()) { -// SysOrganizationVo organizationVoData = organizationVo.getData(); -// if (null != organizationVoData) { -// loanBuckleApply.setUseOrgName(organizationVoData.getName()); -// } -// } -// } -// loanBuckleApply.setNodeState("待提交"); -// baseMapper.insert(loanBuckleApply); -// List records = dto.getRecords(); -// if (!records.isEmpty()) { -// for (LoanBuckleHistoryRecord record : records) { -// LoanBuckleApplyRecord applyRecord = new LoanBuckleApplyRecord(); -// applyRecord.setMainSid(sid); -// applyRecord.setRepaymentHistorySid(record.getRecordSid()); -// loanBuckleApplyRecordService.insert(applyRecord); -// LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(record.getRecordSid()); -// if (null != repaymentHistory) { -// repaymentHistory.setBuckle("申请中"); -// repaymentHistory.setBuckleKey("002"); -// loanRepaymentHistoryService.updateById(repaymentHistory); -// } -// } -// } -// //删除附件表中关于该linkSid的文件 -// loanFileService.deleteByLinkSid(sid); -// List filess = dto.getFiles(); -// if (!filess.isEmpty()) { -// List files = new ArrayList<>(); -// for (LoanBuckleFile file : filess) { -// files.add(file.getUrl()); -// } -// loanFileService.saveAll(sid, files, LoanFileEnum.BUCKLE_APPLY.getAttachType()); -// } -// } -// return rb.success().setData(sid); -// } -// -// public ResultBean buckleDetails(String sid) { -// ResultBean rb = ResultBean.fireFail(); -// LoanBuckleApplyInit initVo = new LoanBuckleApplyInit(); -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); -// LoanBuckleApply loanBuckleApply = fetchBySid(sid); -// if (null != loanBuckleApply) { -// BeanUtil.copyProperties(loanBuckleApply, initVo); -// initVo.setUserSid(loanBuckleApply.getCreateBySid()); -// initVo.setOrgPath(loanBuckleApply.getOrgSidPath()); -// if (StringUtils.isNotBlank(loanBuckleApply.getProcInstId())) { -// initVo.setInstanceId(loanBuckleApply.getProcInstId()); -// } -// if (null != loanBuckleApply.getApplyDate()) { -// initVo.setApplyDate(sdf.format(loanBuckleApply.getApplyDate())); -// } -// List fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.BUCKLE_APPLY.getAttachType()); -// fileList.removeAll(Collections.singleton(null)); -// if (!fileList.isEmpty()) { -// List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). -// collect(Collectors.toList()); -// List loanBuckleFiles = new ArrayList<>(); -// for (String file : files) { -// LoanBuckleFile loanBuckleFile = new LoanBuckleFile(); -// loanBuckleFile.setUrl(file); -// loanBuckleFiles.add(loanBuckleFile); -// } -// initVo.setFiles(loanBuckleFiles); -// } -// List records = loanBuckleApplyRecordService.selByMainSid(sid); -// List recordList = new ArrayList<>(); -// if (!records.isEmpty()) { -// for (LoanBuckleApplyRecord record : records) { -// String historySid = record.getRepaymentHistorySid(); -// LoanBuckleHistoryRecord historyRecord = new LoanBuckleHistoryRecord(); -// LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(historySid).getData(); -// if (null != recordVo) { -// BeanUtil.copyProperties(recordVo, historyRecord); -// } -// recordList.add(historyRecord); -// } -// } -// initVo.setRecords(recordList); -// } -// return rb.success().setData(initVo); -// } -// -// //-------------------------------------流程------------------------------------------------/ -// -// /** -// * 判断提交的流程是否被允许 -// * -// * @param dto -// * @return -// */ -// private synchronized int submitBusinessData(SubmitBuckleDto dto, LoanBuckleApply loanBuckleApply) { -// int r = 0; -// if (StringUtils.isBlank(dto.getSid())) { -// r = 1; -// } else { -// if (loanBuckleApply != null) { -// String businessTaskId = loanBuckleApply.getTaskId(); -// if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { -// //新提交 -// r = 1; -// } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { -// //二次提交//只有数据一致的时候才能进行下一步 -// r = 2; -// } -// } else { -// r = 3; -// } -// } -// return r; -// } -// -// /** -// * 更新流程相关的状态 -// * -// * @param map -// * @return -// */ -// private int updateFlowFiled(Map map) { -// return baseMapper.updateFlowFiled(map); -// } -// -// public ResultBean submitRecordApplication(SubmitBuckleDto dto) { -// ResultBean rb = ResultBean.fireFail(); -// LoanBuckleApply loanBuckleApply = fetchBySid(dto.getSid()); -// int r = submitBusinessData(dto, loanBuckleApply); -// if (r == 3) { -// return rb.setMsg("该申请不存在"); -// } -// if (r == 0) { -// return rb.setMsg("操作失败!提交的数据不一致"); -// } -// String businessSid = ""; -// //新增修改保存 -// ResultBean resultBean = saveBuckle(dto); -// if (resultBean.getSuccess()) { -// businessSid = resultBean.getData(); -// } -// LoanBuckleApply entity = fetchBySid(businessSid); -// String orgSidPath = ""; -// if (StringUtils.isNotBlank(entity.getOrgSidPath())) { -// orgSidPath = entity.getOrgSidPath(); -// } else { -// SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData(); -// if (null != data) { -// //根据staffSid获取用户的组织全路径 -// ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid()); -// if (!staffOrgResultBean.getSuccess()) { -// return rb.setMsg(staffOrgResultBean.getMsg()); -// } -// //用户的组织全路径 -// orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); -// } -// } -// List orgPathList = Arrays.asList(orgSidPath.split("/")); -// SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData(); -// if (sysOrganization == null) { -// return rb.setMsg("当前所在的组织机构不存在"); -// } -// if (StringUtils.isBlank(sysOrganization.getManagerSid())) { -//// return rb.setMsg("当前所在的组织机构未设置主管人员"); -// sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); -// } -// //创建BusinessVariables实体对象 -// BusinessVariables bv = new BusinessVariables(); -// //流程中的参数赋值 -// Map variables = BeanUtil.beanToMap(dto); -// Map appMap = new HashMap<>(); -// //若有网关,则赋值网关中判断的字段。 -//// boolean isTure = true; -//// //去查询是否同意 -//// if (StringUtils.isNotBlank(entity.getSalesUserSid())) { -//// if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) { -//// isTure = false; -//// } -//// } -//// variables.put("isTure", isTure); -// variables.put("businessSid", businessSid); -// appMap.put("sid", businessSid); -// variables.put("app", appMap); -//// String orderNames = "<" + entity.getCustomer() + ">" + "欠款客户备案"; -//// variables.put("orderNames", orderNames); -// LoanBuckleApply loanBuckleApply1 = fetchBySid(businessSid); -// String msgBusinessSid = loanBuckleApply1.getSid(); -// //用户的部门全路径sid -// bv.setOrgSidPath(loanBuckleApply1.getOrgSidPath()); -// //业务sid -// bv.setBusinessSid(businessSid); -// //用户sid -// bv.setUserSid(dto.getUserSid()); -// bv.setFormVariables(variables); -//// String nextNodeUserSids_ = sysOrganization.getManagerSid(); -//// if (isTure) { -//// bv.setNextNodeUserSids(nextNodeUserSids_); -//// } else { -//// bv.setNextNodeUserSids(entity.getSalesUserSid()); -//// } -// //流程定义id -// bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId()); -// if (r == 1) { -// //流程定义id -// bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId()); -// ResultBean voResultBean = flowFeign.startProcess(bv); -// if (!voResultBean.getSuccess()) { -// return rb.setMsg(voResultBean.getMsg()); -// } -// UpdateFlowFieldVo ufVo = voResultBean.getData(); -// int i = updateFlowFiled(BeanUtil.beanToMap(ufVo)); -// //==================================添加线程 -// try { -// ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() -// .setNameFormat("demo-pool-%d").build(); -// ExecutorService pool = new ThreadPoolExecutor(2, 100, -// 0L, TimeUnit.MILLISECONDS, -// new LinkedBlockingQueue(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(appMap); -// messageFlowableQuery.setBusinessSid(msgBusinessSid); -// messageFlowableQuery.setModuleName("划扣申请"); -// SysUserVo userVo = sysUserFeign.fetchBySid(loanBuckleApply1.getCreateBySid()).getData(); -// if (userVo != null) { -// if (StringUtils.isNotBlank(userVo.getName())) { -// messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); -// } -// } -// messageFlowableQuery.setMsgTitle("划扣申请"); -// ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); -// }); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// //==================================添加线程 -// return voResultBean; -// } -// if (r == 2) { -// // ToDo:驳回到发起人后再次提交 -// if (StringUtils.isBlank(dto.getInstanceId())) { -// return rb.setMsg("参数错误:instanceId"); + public ResultBean accrualInit(String orgPath) { + ResultBean rb = ResultBean.fireFail(); + LoanMonthlyAccrualApplyInit vo = new LoanMonthlyAccrualApplyInit(); + vo.setOrgPath(orgPath); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + vo.setApplyDate(sdf.format(new Date())); + List headAndLast = loanRepaymentHistoryService.getMonthHeadAndLast(new Date()); + String head = headAndLast.get(0); + String last = headAndLast.get(1); + QueryWrapper qw = new QueryWrapper<>(); + qw.apply(StringUtils.isNotEmpty(head), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + head + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(last), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + last + "','%Y-%m-%d')" + ); + qw.eq("isDelete", 0); + qw.ne("nodeState", "终止"); + List list = baseMapper.selByNewDate(qw); + if (!list.isEmpty()) { + return rb.setMsg("当月已经发起过月还计提,请勿重复发起!"); + } + List records = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + //======================= + String orgSidPath = orgPath; + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + orgSidPath = orgSidPath.substring(0, i3); + queryWrapper.like("orgSidPath", orgSidPath); + queryWrapper.apply(StringUtils.isNotEmpty(head), "date_format (dueDate,'%Y-%m-%d') >= date_format('" + head + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(last), "date_format (dueDate,'%Y-%m-%d') <= date_format('" + last + "','%Y-%m-%d')" + ); + List planDetailsList = baseMapper.selRepaymentDetailsByDueDate(queryWrapper); + if (!planDetailsList.isEmpty()) { + for (LoanRepaymentPlanDetails details : planDetailsList) { + LoanMonthlyPlanRecord record = new LoanMonthlyPlanRecord(); + record.setRecordSid(details.getSid()); + if (StringUtils.isNotBlank(details.getLoanContractNo())) { + record.setLoanContractNo(details.getLoanContractNo()); + } + if (StringUtils.isNotBlank(details.getVinNo())) { + record.setVinNo(details.getVinNo()); + } + if (StringUtils.isNotBlank(details.getBankName())) { + record.setBankName(details.getBankName()); + } + if (StringUtils.isNotBlank(details.getBankContractNo())) { + record.setBankContractNo(details.getBankContractNo()); + } + if (StringUtils.isNotBlank(details.getBorrowerName())) { + record.setBorrowerName(details.getBorrowerName()); + } + if (StringUtils.isNotBlank(details.getPeriod())) { + record.setPeriod(details.getPeriod()); + } + record.setDueDate(DateUtil.formatDate(details.getDueDate())); + if (null != details.getDueMoney()) { + record.setDueMoney(String.valueOf(details.getDueMoney())); + } + if (StringUtils.isNotBlank(details.getDept())) { + record.setSalesDept(details.getDept()); + } + records.add(record); + } + } + vo.setRecords(records); + return rb.success().setData(vo); + } + + public PagerVo listPage(PagerQuery pq) { + IPage page = PagerUtil.queryToPage(pq); + LoanMonthlyAccrualApplyQuery pagerQuery = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = pagerQuery.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("createBySid", pagerQuery.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + //======================= + //分公司 + if (StringUtils.isNotBlank(pagerQuery.getCompany())) { + qw.like("useOrgName", pagerQuery.getCompany()); + } + //申请人 + if (StringUtils.isNotBlank(pagerQuery.getApplyName())) { + qw.like("applyName", pagerQuery.getApplyName()); + } + //申请编号 + if (StringUtils.isNotBlank(pagerQuery.getBillNo())) { + qw.like("billNo", pagerQuery.getBillNo()); + } + String applyStartTime = pagerQuery.getApplyStartDate(); + String applyEndTime = pagerQuery.getApplyEndDate(); + qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')" + ); + qw.eq("isDelete", 0); + qw.orderByDesc("createTime"); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + + /** + * 生成申请单单据编号 + * + * @param orgSid + * @return + */ + public String getApplyCode(String orgSid) { + //获取分公司sid + ResultBean resultBean1 = sysOrganizationFeign.fetchBySid(orgSid); + String orgCode = resultBean1.getData().getOrgCode(); + BillNo b = new BillNo(); + b.setOrgCode(orgCode); + b.setBillType(BillTypeEnum.YHJT.getBillType()); + String bill = Rule.getBill(b); + int i = baseMapper.selectNum(bill); + String billNo = Rule.getBillNo(bill, i); + return billNo; + } + + @Transactional(rollbackFor = Exception.class) + public ResultBean saveAccrual(LoanMonthlyAccrualApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + LoanMonthlyAccrualApply updateEntity = fetchBySid(sid); + if (null != updateEntity) { + BeanUtil.copyProperties(dto, updateEntity, "id", "sid"); + baseMapper.updateById(updateEntity); + loanMonthlyAccrualRecordService.deleteByMainSid(sid); + //删除附件表中关于该linkSid的文件 + loanFileService.deleteByLinkSid(sid); + List filess = dto.getFiles(); + if (!filess.isEmpty()) { + List files = new ArrayList<>(); + for (LoanAccrualFile file : filess) { + files.add(file.getUrl()); + } + loanFileService.saveAll(sid, files, LoanFileEnum.ACCRUALAPPLY.getAttachType()); + } + List records = dto.getRecords(); + if (!records.isEmpty()) { + for (LoanMonthlyPlanRecord record : records) { + LoanMonthlyAccrualRecord applyRecord = new LoanMonthlyAccrualRecord(); + applyRecord.setMainSid(sid); + applyRecord.setRecordSid(record.getRecordSid()); + loanMonthlyAccrualRecordService.insert(applyRecord); + } + } + } + } else { + LoanMonthlyAccrualApply entity = new LoanMonthlyAccrualApply(); + sid = entity.getSid(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + entity.setCreateBySid(dto.getUserSid()); + entity.setOrgSidPath(dto.getOrgPath()); + ResultBean orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()); + if (orgSidByPath.getSuccess()) { + String userOrgSid = orgSidByPath.getData(); + entity.setUseOrgSid(userOrgSid); + String billNo = getApplyCode(userOrgSid); + entity.setBillNo(billNo); + ResultBean organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid); + if (organizationVo.getSuccess()) { + SysOrganizationVo organizationVoData = organizationVo.getData(); + if (null != organizationVoData) { + entity.setUseOrgName(organizationVoData.getName()); + } + } + } + entity.setNodeState("待提交"); + baseMapper.insert(entity); + List records = dto.getRecords(); + if (!records.isEmpty()) { + for (LoanMonthlyPlanRecord record : records) { + LoanMonthlyAccrualRecord applyRecord = new LoanMonthlyAccrualRecord(); + applyRecord.setMainSid(sid); + applyRecord.setRecordSid(record.getRecordSid()); + loanMonthlyAccrualRecordService.insert(applyRecord); + } + } + //删除附件表中关于该linkSid的文件 + loanFileService.deleteByLinkSid(sid); + List filess = dto.getFiles(); + if (!filess.isEmpty()) { + List files = new ArrayList<>(); + for (LoanAccrualFile file : filess) { + files.add(file.getUrl()); + } + loanFileService.saveAll(sid, files, LoanFileEnum.ACCRUALAPPLY.getAttachType()); + } + } + return rb.success().setData(sid); + } + + public ResultBean accrualDetails(String sid) { + ResultBean rb = ResultBean.fireFail(); + LoanMonthlyAccrualApplyInit initVo = new LoanMonthlyAccrualApplyInit(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + LoanMonthlyAccrualApply accrualApply = fetchBySid(sid); + if (null != accrualApply) { + BeanUtil.copyProperties(accrualApply, initVo); + initVo.setUserSid(accrualApply.getCreateBySid()); + initVo.setOrgPath(accrualApply.getOrgSidPath()); + if (StringUtils.isNotBlank(accrualApply.getProcInstId())) { + initVo.setInstanceId(accrualApply.getProcInstId()); + } + if (null != accrualApply.getApplyDate()) { + initVo.setApplyDate(sdf.format(accrualApply.getApplyDate())); + } + List fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.ACCRUALAPPLY.getAttachType()); + fileList.removeAll(Collections.singleton(null)); + if (!fileList.isEmpty()) { + List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). + collect(Collectors.toList()); + List loanAccrualFiles = new ArrayList<>(); + for (String file : files) { + LoanAccrualFile loanAccrualFile = new LoanAccrualFile(); + loanAccrualFile.setUrl(file); + loanAccrualFiles.add(loanAccrualFile); + } + initVo.setFiles(loanAccrualFiles); + } + List records = loanMonthlyAccrualRecordService.selByMainSid(sid); + List recordList = new ArrayList<>(); + if (!records.isEmpty()) { + for (LoanMonthlyAccrualRecord accrualRecord : records) { + String recordSid = accrualRecord.getRecordSid(); + LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchBySid(recordSid); + if (null != details) { + LoanMonthlyPlanRecord record = new LoanMonthlyPlanRecord(); + record.setRecordSid(details.getSid()); + if (StringUtils.isNotBlank(details.getLoanContractNo())) { + record.setLoanContractNo(details.getLoanContractNo()); + } + if (StringUtils.isNotBlank(details.getVinNo())) { + record.setVinNo(details.getVinNo()); + } + if (StringUtils.isNotBlank(details.getBankName())) { + record.setBankName(details.getBankName()); + } + if (StringUtils.isNotBlank(details.getBankContractNo())) { + record.setBankContractNo(details.getBankContractNo()); + } + if (StringUtils.isNotBlank(details.getBorrowerName())) { + record.setBorrowerName(details.getBorrowerName()); + } + if (StringUtils.isNotBlank(details.getPeriod())) { + record.setPeriod(details.getPeriod()); + } + record.setDueDate(DateUtil.formatDate(details.getDueDate())); + if (null != details.getDueMoney()) { + record.setDueMoney(String.valueOf(details.getDueMoney())); + } + if (StringUtils.isNotBlank(details.getDept())) { + record.setSalesDept(details.getDept()); + } + recordList.add(record); + } + } + } + initVo.setRecords(recordList); + } + return rb.success().setData(initVo); + } + + public ResultBean deleteBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + for (String sid : sids) { + LoanMonthlyAccrualApply entity = fetchBySid(sid); + if (null != entity) { + if (!entity.getNodeState().equals("待提交")) { + return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败"); + } + } + entity.setIsDelete(1); + int i = baseMapper.updateById(entity); + if (i == 0) { + return rb.setMsg("删除失败"); + } + } + return ResultBean.fireSuccess().setMsg("删除成功"); + } + //-------------------------------------流程------------------------------------------------/ + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitAccrualDto dto, LoanMonthlyAccrualApply entity) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (entity != null) { + String businessTaskId = entity.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + } + return r; + } + + /** + * 更新流程相关的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean submitRecordApplication(SubmitAccrualDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanMonthlyAccrualApply monthlyAccrualApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, monthlyAccrualApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + String businessSid = ""; + //新增修改保存 + ResultBean resultBean = saveAccrual(dto); + if (resultBean.getSuccess()) { + businessSid = resultBean.getData(); + } + LoanMonthlyAccrualApply entity = fetchBySid(businessSid); + String orgSidPath = ""; + if (StringUtils.isNotBlank(entity.getOrgSidPath())) { + orgSidPath = entity.getOrgSidPath(); + } else { + SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData(); + if (null != data) { + //根据staffSid获取用户的组织全路径 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid()); + if (!staffOrgResultBean.getSuccess()) { + return rb.setMsg(staffOrgResultBean.getMsg()); + } + //用户的组织全路径 + orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); + } + } + List orgPathList = Arrays.asList(orgSidPath.split("/")); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData(); + if (sysOrganization == null) { + return rb.setMsg("当前所在的组织机构不存在"); + } + if (StringUtils.isBlank(sysOrganization.getManagerSid())) { +// return rb.setMsg("当前所在的组织机构未设置主管人员"); + sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); + } + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值 + Map variables = BeanUtil.beanToMap(dto); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(entity.getSalesUserSid())) { +// if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) { +// isTure = false; // } -// LoanBuckleApply loanBuckleApply2 = fetchBySid(dto.getSid()); -// bv.setTaskId(dto.getTaskId()); -// bv.setTaskDefKey(loanBuckleApply2.getNodeSid()); -// bv.setComment("重新提交"); -// bv.setInstanceId(dto.getInstanceId()); -// return complete(bv); // } -// return rb; -// } -// -// public ResultBean complete(BusinessVariables bv) { -// ResultBean rb = ResultBean.fireFail(); -// String businessSid = bv.getBusinessSid(); -// LoanBuckleApply loanBuckleApply = this.fetchBySid(businessSid); -// if (bv.getTaskId().equals(loanBuckleApply.getTaskId())) { -// bv.setOrgSidPath(loanBuckleApply.getOrgSidPath()); -// //流程中的参数赋值 -// Map variables = new HashMap<>(); -// Map appMap = new HashMap<>(); -// //若有网关,则赋值网关中判断的字段。 -//// boolean isTure = true; -//// //去查询是否同意 -//// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { -//// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { -//// isTure = false; -//// } -//// } -//// variables.put("isTure", isTure); -//// if (bv.getTaskDefKey().equals("Activity_1078xxs")) { -//// if (StringUtils.isNotBlank(loanCustomerRecord.getManageSid())) { -//// bv.setNextNodeUserSids(loanCustomerRecord.getManageSid()); -//// } else { -//// bv.setNextNodeUserSids(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); -//// } -//// } -// variables.put("businessSid", businessSid); -// appMap.put("sid", businessSid); -// variables.put("app", appMap); -// bv.setFormVariables(variables); -// ResultBean resultBean = flowFeign.handleProsess(bv); -// if (!resultBean.getSuccess()) { -// return rb.setMsg(resultBean.getMsg()); -// } -// int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); -// if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { -// LoanBuckleApply buckleApply = fetchBySid(businessSid); -// buckleApply.setClosingDate(new DateTime()); -// baseMapper.updateById(buckleApply); -// List applyRecords = loanBuckleApplyRecordService.selByMainSid(businessSid); -// if (!applyRecords.isEmpty()) { -// for (LoanBuckleApplyRecord applyRecord : applyRecords) { -// LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); -// if (null != repaymentHistory) { -// repaymentHistory.setBuckle("审核通过"); -// repaymentHistory.setBuckleKey("003"); -// repaymentHistory.setClosingDate(new DateTime()); -// loanRepaymentHistoryService.updateById(repaymentHistory); -// } -// } -// } -// } -// return rb.success().setData(resultBean.getData()); +// variables.put("isTure", isTure); + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + variables.put("app", appMap); +// String orderNames = "<" + entity.getCustomer() + ">" + "欠款客户备案"; +// variables.put("orderNames", orderNames); + LoanMonthlyAccrualApply monthlyAccrualApply1 = fetchBySid(businessSid); + String msgBusinessSid = monthlyAccrualApply1.getSid(); + //用户的部门全路径sid + bv.setOrgSidPath(monthlyAccrualApply1.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); +// String nextNodeUserSids_ = sysOrganization.getManagerSid(); +// if (isTure) { +// bv.setNextNodeUserSids(nextNodeUserSids_); // } else { -// return rb.setMsg("操作失败!提交的数据不一致"); -// } -// } -// -// -// public ResultBean revokeProcess(BuckleTaskQuery query) { -// ResultBean rb = ResultBean.fireFail(); -// if (StringUtils.isBlank(query.getUserSid())) { -// return rb.setMsg("参数错误:userSid"); +// bv.setNextNodeUserSids(entity.getSalesUserSid()); // } -// LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); -// String businessTaskId = loanBuckleApply.getTaskId(); -// if (StringUtils.isNotBlank(businessTaskId)) { -// if (businessTaskId.equals(query.getTaskId())) { -// FlowTaskVo flowTaskVo = new FlowTaskVo(); -// BeanUtil.copyProperties(query, flowTaskVo); -// ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); -// if (!resultBean.getSuccess()) { -// return rb.setMsg(resultBean.getMsg()); + //流程定义id + bv.setModelId(ProcDefEnum.MONTHLYACCRUAL.getProDefId()); + if (r == 1) { + //流程定义id + bv.setModelId(ProcDefEnum.MONTHLYACCRUAL.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + int i = updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(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(appMap); + messageFlowableQuery.setBusinessSid(msgBusinessSid); + messageFlowableQuery.setModuleName("当月应收计提申请"); + SysUserVo userVo = sysUserFeign.fetchBySid(monthlyAccrualApply1.getCreateBySid()).getData(); + if (userVo != null) { + if (StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + } + messageFlowableQuery.setMsgTitle("当月应收计提申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + LoanMonthlyAccrualApply monthlyAccrualApply2 = fetchBySid(dto.getSid()); + bv.setTaskId(dto.getTaskId()); + bv.setTaskDefKey(monthlyAccrualApply2.getNodeSid()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanMonthlyAccrualApply monthlyAccrualApply = this.fetchBySid(businessSid); + if (bv.getTaskId().equals(monthlyAccrualApply.getTaskId())) { + bv.setOrgSidPath(monthlyAccrualApply.getOrgSidPath()); + //流程中的参数赋值 + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; // } -// updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); -// return rb.success().setData(resultBean.getData()); // } -// } -// return rb.setMsg("操作失败,提交的数据不一致!"); -// } -// -// public ResultBean taskReject(BuckleTaskQuery query) { -// ResultBean rb = ResultBean.fireFail(); -// String businessSid = query.getBusinessSid(); -// LoanBuckleApply loanBuckleApply = fetchBySid(businessSid); -// if (loanBuckleApply == null) { -// return rb.setMsg("该申请不存在"); -// } -// String businessTaskId = loanBuckleApply.getTaskId(); -// if (StringUtils.isNotBlank(businessTaskId)) { -// if (businessTaskId.equals(query.getTaskId())) { -// if (StringUtils.isBlank(query.getComment())) { -// return rb.setMsg("请填写意见"); -// } -// if (StringUtils.isBlank(query.getUserSid())) { -// return rb.setMsg("参数错误:userSid"); -// } -// FlowTaskVo flowTaskVo = new FlowTaskVo(); -// BeanUtil.copyProperties(query, flowTaskVo); -// Map variables = new HashMap<>(); -// Map appMap = new HashMap<>(); -// appMap.put("sid", businessSid); -// variables.put("app", appMap); -// //若有网关,则赋值网关中判断的字段。 -//// boolean isTure = true; -//// //去查询是否同意 -//// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { -//// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { -//// isTure = false; -//// } -//// } -//// variables.put("isTure", isTure); -// flowTaskVo.setValues(variables); -// ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); -// if (!resultBean.getSuccess()) { -// return rb.setMsg(resultBean.getMsg()); -// } -// UpdateFlowFieldVo ufVo = resultBean.getData(); -// Map map = BeanUtil.beanToMap(ufVo); -// //更新业务中的流程相关的参数 -// updateFlowFiled(map); -// //极光推送 -// loanBuckleApply = fetchBySid(businessSid); -// MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); -// MessageFlowVo messageFlowVo = new MessageFlowVo(); -// BeanUtil.copyProperties(ufVo, messageFlowVo); -// String procId = loanBuckleApply.getProcInstId(); -// messageFlowVo.setProcInsId(procId); -// messageFlowVo.setProcDefId(loanBuckleApply.getProcDefId()); -// messageFlowableQuery.setUfVo(messageFlowVo); -// messageFlowableQuery.setAppMap(appMap); -// messageFlowableQuery.setBusinessSid(businessSid); -// messageFlowableQuery.setModuleName("划扣申请"); -// ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); -// String nextName = listResultBean.getData().get(0).getName_(); -// String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); -// List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); -//// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) { -// if ("发起申请".equals(nextName)) { -// messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); +// variables.put("isTure", isTure); +// if (bv.getTaskDefKey().equals("Activity_1078xxs")) { +// if (StringUtils.isNotBlank(loanCustomerRecord.getManageSid())) { +// bv.setNextNodeUserSids(loanCustomerRecord.getManageSid()); // } else { -// SysUserVo userVo = sysUserFeign.fetchBySid(loanBuckleApply.getCreateBySid()).getData(); -// if (userVo != null) { -// if (StringUtils.isNotBlank(userVo.getName())) { -// messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); -// } -// } +// bv.setNextNodeUserSids(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); // } -// messageFlowableQuery.setMsgTitle("划扣申请"); -// ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); -// return rb.success(); // } -// } -// return rb.setMsg("操作失败!提交的数据不一致!"); -// } -// -// public ResultBean breakProcess(BuckleTaskQuery query) { -// ResultBean rb = ResultBean.fireFail(); -// if (StringUtils.isBlank(query.getInstanceId())) { -// return rb.setMsg("参数错误:instanceId"); -// } -// if (StringUtils.isBlank(query.getUserSid())) { -// return rb.setMsg("参数错误:userSid"); -// } -// if (StringUtils.isBlank(query.getComment())) { -// return rb.setMsg("请填写意见"); -// } -// LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); -// String businessTaskId = loanBuckleApply.getTaskId(); -// if (StringUtils.isNotBlank(businessTaskId)) { -// if (query.getUserSid().equals(loanBuckleApply.getCreateBySid())) { -// FlowTaskVo flowTaskVo = new FlowTaskVo(); -// BeanUtil.copyProperties(query, flowTaskVo); -// ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); -// if (!resultBean.getSuccess()) { -// return rb.setMsg(resultBean.getMsg()); -// } -// Map map = BeanUtil.beanToMap(resultBean.getData()); -// updateFlowFiled(map); -// //终止任务后划扣状态改完未通过 -// LoanBuckleApply entity = fetchBySid(query.getBusinessSid()); -// if (entity.getNodeState().equals("终止")) { -// List applyRecords = loanBuckleApplyRecordService.selByMainSid(query.getBusinessSid()); -// if (!applyRecords.isEmpty()) { -// for (LoanBuckleApplyRecord applyRecord : applyRecords) { -// LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); -// if (null != repaymentHistory) { -// repaymentHistory.setBuckle("审核未通过"); -// repaymentHistory.setBuckleKey("004"); -// loanRepaymentHistoryService.updateById(repaymentHistory); -// } -// } -// } -// } -// return rb.success().setData(resultBean.getData()); -// } else { -// if (businessTaskId.equals(query.getTaskId())) { -// FlowTaskVo flowTaskVo = new FlowTaskVo(); -// BeanUtil.copyProperties(query, flowTaskVo); -// ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); -// if (!resultBean.getSuccess()) { -// return rb.setMsg(resultBean.getMsg()); -// } -// Map map = BeanUtil.beanToMap(resultBean.getData()); -// updateFlowFiled(map); -// //终止任务后划扣状态改完未通过 -// LoanBuckleApply entity = fetchBySid(query.getBusinessSid()); -// if (entity.getNodeState().equals("终止")) { -// List applyRecords = loanBuckleApplyRecordService.selByMainSid(query.getBusinessSid()); -// if (!applyRecords.isEmpty()) { -// for (LoanBuckleApplyRecord applyRecord : applyRecords) { -// LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); -// if (null != repaymentHistory) { -// repaymentHistory.setBuckle("审核未通过"); -// repaymentHistory.setBuckleKey("004"); -// loanRepaymentHistoryService.updateById(repaymentHistory); -// } -// } -// } + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + LoanMonthlyAccrualApply accrualApply = fetchBySid(businessSid); + accrualApply.setClosingDate(new DateTime()); + baseMapper.updateById(accrualApply); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + + public ResultBean revokeProcess(AccrualTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanMonthlyAccrualApply monthlyAccrualApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = monthlyAccrualApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean taskReject(AccrualTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanMonthlyAccrualApply monthlyAccrualApply = fetchBySid(businessSid); + if (monthlyAccrualApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = monthlyAccrualApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; // } -// -// return rb.success().setData(resultBean.getData()); // } +// variables.put("isTure", isTure); + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + monthlyAccrualApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = monthlyAccrualApply.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(monthlyAccrualApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("当月应收计提申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); +// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) { + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + SysUserVo userVo = sysUserFeign.fetchBySid(monthlyAccrualApply.getCreateBySid()).getData(); + if (userVo != null) { + if (StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + } + } + messageFlowableQuery.setMsgTitle("当月应收计提申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean breakProcess(AccrualTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + LoanMonthlyAccrualApply monthlyAccrualApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = monthlyAccrualApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(monthlyAccrualApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean flowRecord(String procInsId) { + return flowTaskFeign.businessFlowRecord(procInsId); + } + + public ResultBean> getNextNodesForSubmit(AccrualGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //根据业务sid查询排产信息 + LoanMonthlyAccrualApply entity = fetchBySid(query.getBusinessSid()); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; // } -// // } -// return rb.setMsg("操作失败!提交的数据不一致!"); -// } -// -// public ResultBean flowRecord(String procInsId) { -// return flowTaskFeign.businessFlowRecord(procInsId); -// } -// -// public ResultBean> getNextNodesForSubmit(BuckleGetNodeQuery query) { -// ResultBean> rb = ResultBean.fireFail(); -// BusinessVariables bv = new BusinessVariables(); -// BeanUtil.copyProperties(query, bv); -// //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 -// Map variables = new HashMap<>(); -// -// //根据业务sid查询排产信息 -// LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); +// variables.put("isTure", isTure); + bv.setFormVariables(variables); + bv.setModelId(entity.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), AccrualGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getPreviousNodesForReject(AccrualGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //根据业务sid查询排产信息 + LoanMonthlyAccrualApply entity = fetchBySid(query.getBusinessSid()); // //若有网关,则赋值网关中判断的字段。 -//// boolean isTure = true; -//// //去查询是否同意 -//// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { -//// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { -//// isTure = false; -//// } -//// } -//// variables.put("isTure", isTure); -// bv.setFormVariables(variables); -// bv.setModelId(loanBuckleApply.getProcDefId()); -// ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); -// //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo -// List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BuckleGetNodeVo.class)).collect(Collectors.toList()); -// return rb.success().setData(voList); -// } -// -// public ResultBean> getPreviousNodesForReject(BuckleGetNodeQuery query) { -// ResultBean> rb = ResultBean.fireFail(); -// BusinessVariables bv = new BusinessVariables(); -// BeanUtil.copyProperties(query, bv); -// //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 -// Map variables = new HashMap<>(); -// //根据业务sid查询排产信息 -// LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); -//// //若有网关,则赋值网关中判断的字段。 -//// boolean isTure = true; -//// //去查询是否同意 -//// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { -//// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { -//// isTure = false; -//// } -//// } -//// variables.put("isTure", isTure); -// bv.setFormVariables(variables); -// bv.setModelId(loanBuckleApply.getProcDefId()); -// ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); -// //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo -// List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BuckleGetNodeVo.class)).collect(Collectors.toList()); -// return rb.success().setData(voList); -// } -// -// public ResultBean delegate(BuckleDelegateQuery query) { -// ResultBean rb = ResultBean.fireFail(); -// FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); -// BeanUtil.copyProperties(query, delegateQuery); -// flowFeign.delegate(delegateQuery); -// return rb.success(); -// } -// -// -// public ResultBean appDetail(String sid) { -// ResultBean rb = ResultBean.fireFail(); -// AppBuckleDetailsVo vo = new AppBuckleDetailsVo(); -// LoanBuckleApply loanBuckleApply = fetchBySid(sid); -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); -// if (null != loanBuckleApply) { -// vo.setSid(sid); -// String dept = ""; -// String applyName = ""; -// if (StringUtils.isNotBlank(loanBuckleApply.getRemarks())) { -// vo.setRemarks(loanBuckleApply.getRemarks()); -// } -// if (StringUtils.isNotBlank(loanBuckleApply.getProcInstId())) { -// vo.setProcInsId(loanBuckleApply.getProcInstId()); -// } -// if (StringUtils.isNotBlank(loanBuckleApply.getTaskId())) { -// vo.setTaskId(loanBuckleApply.getTaskId()); -// } -// if (null != loanBuckleApply.getApplyDate()) { -// vo.setTime(sdf.format(loanBuckleApply.getApplyDate())); -// } -// if (StringUtils.isNotBlank(loanBuckleApply.getDept())) { -// dept = loanBuckleApply.getDept(); -// } -// if (StringUtils.isNotBlank(loanBuckleApply.getApplyName())) { -// applyName = loanBuckleApply.getApplyName(); -// } -// vo.setPublishInfo(dept + "-" + applyName); -// List fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.BUCKLE_APPLY.getAttachType()); -// fileList.removeAll(Collections.singleton(null)); -// if (!fileList.isEmpty()) { -// List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). -// collect(Collectors.toList()); -// vo.setFiles(files); -// } -// List applyRecords = loanBuckleApplyRecordService.selByMainSid(sid); -// List records = new ArrayList<>(); -// if (!applyRecords.isEmpty()) { -// for (LoanBuckleApplyRecord applyRecord : applyRecords) { -// String historySid = applyRecord.getRepaymentHistorySid(); -// LoanRepaymentHistoryRecordVo data = loanRepaymentHistoryService.buckleInfo(historySid).getData(); -// if (null != data) { -// AppRecordVo appRecordVo = new AppRecordVo(); -// if (StringUtils.isNotBlank(data.getLoanContractNo())) { -// appRecordVo.setContractId(data.getLoanContractNo()); -// } -// if (StringUtils.isNotBlank(data.getPeriod())) { -// appRecordVo.setInstalments("期数:" + data.getPeriod()); -// } -// if (StringUtils.isNotBlank(data.getVinNo())) { -// appRecordVo.setVin("车架号:" + data.getVinNo()); -// } -// if (StringUtils.isNotBlank(data.getReturnWay())) { -// appRecordVo.setType(data.getReturnWay()); -// } -// if (StringUtils.isNotBlank(data.getBankName())) { -// appRecordVo.setZf(data.getBankName()); -// } -// if (StringUtils.isNotBlank(data.getBankContractNo())) { -// appRecordVo.setZfNo(data.getBankContractNo()); -// } -// if (StringUtils.isNotBlank(data.getCustomer())) { -// appRecordVo.setCusName(data.getCustomer()); -// } -// if (StringUtils.isNotBlank(data.getBorrowerName())) { -// appRecordVo.setLoanName(data.getBorrowerName()); -// } -//// if (StringUtils.isNotBlank(data.getDueDate())) { -//// appRecordVo.setRepaymentDate(data.getDueDate()); -//// } -// String yinghuan = ""; -// String weihuan = ""; -// String shihuan = ""; -// String shihuandate = ""; -//// if (StringUtils.isNotBlank(data.getDueMoney())) { -//// yinghuan = data.getDueMoney(); -//// } -//// if (StringUtils.isNotBlank(data.getOutstandingMoney())) { -//// weihuan = data.getOutstandingMoney(); -//// } -// if (StringUtils.isNotBlank(data.getActualDate())) { -// shihuandate = data.getActualDate(); -// } -// if (StringUtils.isNotBlank(data.getActualMoney())) { -// shihuan = data.getActualMoney(); -// } -// appRecordVo.setInfo1(""); -// appRecordVo.setInfo2("实还日期:" + shihuandate + ",实还金额:" + shihuan); -// records.add(appRecordVo); -// } -// } -// } -// vo.setRecords(records); -// } -// return rb.success().setData(vo); -// } -// -// public ResultBean deleteBySids(String[] sids) { -// ResultBean rb = ResultBean.fireFail(); -// for (String sid : sids) { -// LoanBuckleApply loanBuckleApply = fetchBySid(sid); -// if (null != loanBuckleApply) { -// if (!loanBuckleApply.getNodeState().equals("待提交")) { -// return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败"); -// } -// } -// loanBuckleApply.setIsDelete(1); -// int i = baseMapper.updateById(loanBuckleApply); -// if (i == 0) { -// return rb.setMsg("删除失败"); -// } -// List applyRecords = loanBuckleApplyRecordService.selByMainSid(sid); -// if (!applyRecords.isEmpty()) { -// for (LoanBuckleApplyRecord applyRecord : applyRecords) { -// LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); -// if (null != repaymentHistory) { -// repaymentHistory.setBuckle("未申请"); -// repaymentHistory.setBuckleKey("001"); -// loanRepaymentHistoryService.updateById(repaymentHistory); -// } -// } +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; // } // } -// return ResultBean.fireSuccess().setMsg("删除成功"); -// } +// variables.put("isTure", isTure); + bv.setFormVariables(variables); + bv.setModelId(entity.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), AccrualGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + public ResultBean delegate(AccrualDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } }