Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 2 years ago
parent
commit
a2a3f15816
  1. 14
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributor.java
  2. 11
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorDetailsVo.java
  3. 1
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorDto.java
  4. 51
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorFeign.java
  5. 51
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorFeignFallback.java
  6. 7
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorVo.java
  7. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/app/BaseDisDetailsVo.java
  8. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/app/BaseDistribuDeailVo.java
  9. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/app/BaseDistributorsVo.java
  10. 23
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/AppSubmitDistributorApplyDto.java
  11. 40
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/BaseDistributorCompleteDto.java
  12. 56
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/BaseDistributorTaskQuery.java
  13. 26
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/GetNodeQuery.java
  14. 25
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/GetNodeVo.java
  15. 22
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/SubmitBaseDistributorApplyDto.java
  16. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorMapper.java
  17. 37
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorMapper.xml
  18. 71
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorRest.java
  19. 708
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorService.java
  20. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml
  21. 12
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/FinSelectVo.java
  22. 274
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java
  23. 3
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bushandover/BusHandoverService.java
  24. 137
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java
  25. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busvehicledatahandover/BusVehicleDataHandoverService.java
  26. 34
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/receiveVehicleConfirmation.ftl
  27. 1287
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/vinHandoverData.ftl
  28. 2
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempQuery.java
  29. 3
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java
  30. 15
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/FinCustNameAndPhone.java
  31. 22
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/TzDto.java
  32. 25
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/ZR.java
  33. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/ReceiveInvoiceVo.java
  34. 14
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/ReceiveSeleteVo.java
  35. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/otherarreceivable/OtherReceivable.java
  36. 10
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationMapper.xml
  37. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  38. 522
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardapply/FinFundsCarriedForwardApplyService.java
  39. 7
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardveh/FinFundsCarriedForwardVehMapper.java
  40. 32
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardveh/FinFundsCarriedForwardVehMapper.xml
  41. 13
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardveh/FinFundsCarriedForwardVehService.java
  42. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java
  43. 19
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml
  44. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java
  45. 29
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedMapper.xml
  46. 14
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillCastToKingDeeBillFields.java
  47. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillService.java
  48. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data_model.json
  49. 34
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow2/FlowFeign.java
  50. 9
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow2/FlowFeignback.java
  51. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  52. 15
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  53. 14
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowMapper.java
  54. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowMapper.xml
  55. 104
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowRest.java
  56. 719
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java
  57. 2
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.java
  58. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.xml
  59. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java
  60. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanpreloancreditapply/LoanPreloanCreditApplyVo.java
  61. 20
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanpreloancreditapply/LoanPreloanCreditApplyService.java
  62. 22
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单1.docx
  63. 23
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单2.docx
  64. 29
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单3.docx
  65. 42
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单4.docx
  66. 4
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DisDetailsVo.java
  67. 5
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DisInitDetailsVo.java
  68. 44
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DistributorFeign.java
  69. 4
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DistributorVo.java
  70. 33
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/CompleteDistributorDto.java
  71. 21
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/DistributorFlowableQuery.java
  72. 44
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/DistributorTaskQuery.java
  73. 22
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/SubmitDistributorApplyDto.java
  74. 39
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/distributor/DistributorRest.java
  75. 139
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/distributor/DistributorService.java
  76. 1158
      工作内容需要的文档/单据模板/款项结转打印模板/kxjz.ftl
  77. 7
      工作内容需要的文档/单据模板/款项结转打印模板/款项结转(调账申请).doc

14
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributor.java

@ -98,4 +98,18 @@ public class BaseDistributor extends BaseEntity {
private String disLevelKey;
@ApiModelProperty("级别value")
private String disLevelValue;
@ApiModelProperty("流程定义的id")
private String procDefId;
@ApiModelProperty("环节定义的sid")
private String nodeSid;
@ApiModelProperty("流程实例的id")
private String procInstId;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
@ApiModelProperty("办结日期")
private Date closingDate;
}

11
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorDetailsVo.java

@ -24,7 +24,7 @@ public class BaseDistributorDetailsVo implements Vo {
@ApiModelProperty("统一社会信用代码")
private String registNum;
@ApiModelProperty("成立时间")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date setUpTime;
@ApiModelProperty("注册(登记)地址")
private String registDetailAddress;
@ -71,7 +71,7 @@ public class BaseDistributorDetailsVo implements Vo {
@ApiModelProperty("是否担保 0是/1否")
private String isGuarantee;
@ApiModelProperty("开始合作日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date startCoopDate;
@ApiModelProperty("创建组织")
private String createOrg;
@ -101,4 +101,11 @@ public class BaseDistributorDetailsVo implements Vo {
private List<BaseDistributorAppendixVo> frsfzList;
@ApiModelProperty("其他资料附件list")
private List<BaseDistributorAppendixVo> qtzlList;
@ApiModelProperty("taskId")
private String taskId; // taskId
@ApiModelProperty("流程实例的sid")
private String procInsId; // 流程实例的sid
@ApiModelProperty("userSid")
private String userSid;
private String orgSidPath;
}

1
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorDto.java

@ -108,4 +108,5 @@ public class BaseDistributorDto implements Dto {
private List<BaseDistributorAppendixDto> frsfzList;
@ApiModelProperty("其他资料附件list")
private List<BaseDistributorAppendixDto> qtzlList;
private String orgSidPath;
}

51
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorFeign.java

@ -1,12 +1,14 @@
package com.yxt.anrui.base.api.basedistributor;
import com.yxt.anrui.base.api.basedistributor.app.*;
import com.yxt.anrui.base.api.basedistributor.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.ApiImplicitParam;
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.*;
@ -82,8 +84,46 @@ public interface BaseDistributorFeign {
@ApiOperation("PC端-中介人员-经销商列表")
@PostMapping("/getDistributors")
ResultBean<List<BaseDistributorsListVo>> getDistributors(@RequestBody BaseDistributorsListQuery pagerQuery);
//---------------------------------------移动端-------------------------------------------------//
//---------------------------------------------- 流程接口 --------------------------------------------------/
@ApiOperation("经销商备案提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitBaseDistributorApplyDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody BaseDistributorCompleteDto dto);
//分公司到风控中心同意
@ApiOperation(value = "办理(同意)")
@PostMapping("/companyToDivisionOperate")
public ResultBean companyToDivisionOperate(@Valid @RequestBody BaseDistributorCompleteDto query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BaseDistributorTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BaseDistributorTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody BaseDistributorTaskQuery 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<List<GetNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap GetNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<GetNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap GetNodeQuery query);
//---------------------------------------移动端-------------------------------------------------//
@ApiOperation("移动端-销售订单-经销商分页列 表")
@PostMapping("/getDistributorList")
ResultBean<PagerVo<BaseDistributorsListVo>> getDistributorList(@RequestBody PagerQuery<BaseDistributorsListQuery> pagerQuery);
@ -142,13 +182,18 @@ public interface BaseDistributorFeign {
@ApiOperation("查询所有经销商信息")
@GetMapping("/selectAllDisList")
ResultBean<List<BaseDistributorListVo>> selectAllDisList(@RequestParam("orgSid") String orgSid,@RequestParam("staffSid") String staffSid);
ResultBean<List<BaseDistributorListVo>> selectAllDisList(@RequestParam("orgSid") String orgSid, @RequestParam("staffSid") String staffSid);
@ApiOperation("移动端查询经销商和客户信息")
@GetMapping("/invoiceName")
ResultBean<List<AppDisAndCustm>> invoiceName(@RequestParam("userSid") String userSid,@RequestParam("orgPath") String orgPath,@RequestParam(value = "search",required = false) String search);
ResultBean<List<AppDisAndCustm>> invoiceName(@RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath, @RequestParam(value = "search", required = false) String search);
@ApiOperation("根据sid查询所有经销商信息")
@GetMapping("/selectDisListBySid/{sid}")
ResultBean<BaseDistributorListVo> selectDisListBySid(@PathVariable("sid") String sid);
//---------------------------------------移动端流程---------------------------------------------//
@ApiOperation("经销商备案提交")
@PostMapping("/submitDistributor")
public ResultBean submitDistributor(@RequestBody @Valid AppSubmitDistributorApplyDto dto);
}

51
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorFeignFallback.java

@ -1,6 +1,7 @@
package com.yxt.anrui.base.api.basedistributor;
import com.yxt.anrui.base.api.basedistributor.app.*;
import com.yxt.anrui.base.api.basedistributor.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -82,6 +83,51 @@ public class BaseDistributorFeignFallback implements BaseDistributorFeign {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitBaseDistributorApplyDto dto) {
return null;
}
@Override
public ResultBean complete(BaseDistributorCompleteDto dto) {
return null;
}
@Override
public ResultBean companyToDivisionOperate(BaseDistributorCompleteDto query) {
return null;
}
@Override
public ResultBean revokeProcess(BaseDistributorTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(BaseDistributorTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(BaseDistributorTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return null;
}
@Override
public ResultBean<PagerVo<BaseDistributorsListVo>> getDistributorList(PagerQuery<BaseDistributorsListQuery> pagerQuery) {
return null;
@ -167,5 +213,10 @@ public class BaseDistributorFeignFallback implements BaseDistributorFeign {
return null;
}
@Override
public ResultBean submitDistributor(AppSubmitDistributorApplyDto dto) {
return null;
}
}

7
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/BaseDistributorVo.java

@ -102,4 +102,11 @@ public class BaseDistributorVo implements Vo {
private String disLevelValue;
@ApiModelProperty("是否关联(0未关联,1已关联)")
private String isRelation;
@ApiModelProperty("备案状态")
private String state;
private String procDefId;
@ApiModelProperty("实例id")
private String procInstId;
@ApiModelProperty("流程状态")
private String nodeState;
}

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/app/BaseDisDetailsVo.java

@ -22,6 +22,7 @@ public class BaseDisDetailsVo implements Vo {
private BaseFileVo fileInfo;
@ApiModelProperty(value = "人员列表")
private List<BaseRecordsVo> records;
private String procInstId;
private String taskId;
}

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/app/BaseDistribuDeailVo.java

@ -20,7 +20,8 @@ public class BaseDistribuDeailVo implements Vo {
private Integer invoiceInfoState;
@ApiModelProperty(value = "文件信息状态")
private Integer fileInfoState;
private String procInstId;
private String taskId;
private List<BaseInfoListVo> records;
}

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/app/BaseDistributorsVo.java

@ -31,4 +31,6 @@ public class BaseDistributorsVo implements Vo {
private String invoPhone;
@ApiModelProperty(value = "成立日期")
private String setUpTime;
//private String nodeState;
private boolean updateBtn;
}

23
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/AppSubmitDistributorApplyDto.java

@ -0,0 +1,23 @@
package com.yxt.anrui.base.api.basedistributor.flow;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/7/14 9:15
*/
@Data
public class AppSubmitDistributorApplyDto implements Dto {
@ApiModelProperty("distributorSid")
private String distributorSid;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程实例id")
@JsonProperty("procInsId")
private String instanceId;
}

40
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/BaseDistributorCompleteDto.java

@ -0,0 +1,40 @@
package com.yxt.anrui.base.api.basedistributor.flow;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 9:01
* @Description
*/
@Data
public class BaseDistributorCompleteDto implements Dto {
private static final long serialVersionUID = 3240453987322803352L;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
@NotBlank(message = "参数错误:comment")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

56
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/BaseDistributorTaskQuery.java

@ -0,0 +1,56 @@
package com.yxt.anrui.base.api.basedistributor.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/28 17:29
* @Description 终止撤回驳回查询参数
*/
@Data
public class BaseDistributorTaskQuery implements Query {
private static final long serialVersionUID = -4006020771892400451L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
/*@ApiModelProperty("用户Id")
private String userId;
@ApiModelProperty("节点")
private String targetKey;
@ApiModelProperty("流程变量信息")
private Map<String, Object> values = new HashMap<>();
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers = new ArrayList<>();
@ApiModelProperty("审批组")
private List<String> candidateGroups = new ArrayList<>();*/
}

26
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/GetNodeQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.base.api.basedistributor.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 10:42
* @Description
*/
@Data
public class GetNodeQuery implements Query {
private static final long serialVersionUID = -5674867230708197611L;
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

25
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/GetNodeVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.base.api.basedistributor.flow;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/6/28 11:09
* @Description
*/
@Data
public class GetNodeVo implements Vo {
private static final long serialVersionUID = 8802774014747063504L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

22
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributor/flow/SubmitBaseDistributorApplyDto.java

@ -0,0 +1,22 @@
package com.yxt.anrui.base.api.basedistributor.flow;
import com.yxt.anrui.base.api.basedistributor.BaseDistributorDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/27 13:38
* @Description
*/
@Data
public class SubmitBaseDistributorApplyDto extends BaseDistributorDto {
private static final long serialVersionUID = 378585162071125756L;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("业务sid")
private String sid;
}

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorMapper.java

@ -136,4 +136,6 @@ public interface BaseDistributorMapper extends BaseMapper<BaseDistributor> {
BaseDistributorListVo selectDisListBySid(String sid);
List<BaseDistributorListVo> selectAppAllDisList(@Param("sid") String sid, @Param("search") String search);
int updateFlowFiled(Map<String, Object> map);
}

37
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorMapper.xml

@ -12,7 +12,14 @@
bd.invoBankNum,
bd.setUpTime,
bd.isGuarantee,
bd.pDistributorName
bd.pDistributorName,
bd.procDefId,
bd.procInstId,
bd.nodeState,
case bd.state
when 1 then '未报备'
when 3 then '报备中'
when 2 then '已报备' end as `state`
FROM base_distributor bd
<where>
${ew.sqlSegment}
@ -95,7 +102,7 @@
<select id="namesDown" resultType="java.util.Map">
SELECT bdb.sid, bdb.distributorName
FROM base_distributor bdb
${ew.customSqlSegment}
${ew.customSqlSegment}
</select>
<select id="getBaseDistributorList" resultType="com.yxt.anrui.base.api.basedistributor.PcBaseDistributorVo">
@ -128,13 +135,12 @@
<select id="getDistributorListOne" resultType="com.yxt.anrui.base.api.basedistributor.app.BaseDistributorsVo">
SELECT bd.sid,
bd.disName,
case bd.state
when 1 then '未备案'
when 2 then '已备案' end as state,
bd.nodeState as state,
if(length(bd.pDistributorName)>0,bd.pDistributorName,'无') as pDistributorName,
bd.registNum,
bd.registDetailAddress,
bd.invoPhone,
bd.nodeState,
DATE_FORMAT(bd.setUpTime, '%Y-%m-%d') as setUpTime
FROM base_distributor bd
<where>
@ -168,7 +174,7 @@
</select>
<select id="getInfo" resultType="com.yxt.anrui.base.api.basedistributor.app.BaseInvoiceInfoVo">
select bd.sid, bd.invoPhone, bd.invoBank, bd.invoBankNum,bd.registDetailAddress,bd.registNum
select bd.sid, bd.invoPhone, bd.invoBank, bd.invoBankNum, bd.registDetailAddress, bd.registNum
from base_distributor bd
where bd.sid = #{sid}
</select>
@ -194,6 +200,21 @@
invoBank = #{invoBank}
where sid = #{sid}
</update>
<update id="updateFlowFiled">
UPDATE base_distributor
SET nodeState=#{nodeState}
, nodeSid=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
<select id="selectDisList" resultType="com.yxt.anrui.base.api.basedistributor.BaseDistributorListVo">
select disName as name, sid
@ -233,7 +254,7 @@
invoBankNum
FROM base_distributor
WHERE isDelete = 0
AND createOrg = #{orgSid}
AND createOrg = #{orgSid}
</select>
<select id="selectDisListBySid" resultType="com.yxt.anrui.base.api.basedistributor.BaseDistributorListVo">
@ -245,7 +266,7 @@
invoBankNum
FROM base_distributor
WHERE isDelete = 0
AND sid = #{sid}
AND sid = #{sid}
</select>
<select id="selectAppAllDisList" resultType="com.yxt.anrui.base.api.basedistributor.BaseDistributorListVo">

71
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorRest.java

@ -1,12 +1,16 @@
package com.yxt.anrui.base.biz.basedistributor;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basedistributor.*;
import com.yxt.anrui.base.api.basedistributor.app.*;
import com.yxt.anrui.base.api.basedistributor.flow.*;
import com.yxt.anrui.base.biz.basedistributorappendix.BaseDistributorAppendixService;
import com.yxt.anrui.base.biz.basedistributorlegal.BaseDistributorLegalService;
import com.yxt.anrui.base.biz.basedistributorperson.BaseDistributorPersonService;
import com.yxt.anrui.base.biz.basedistributorstaff.BaseDistributorStaffService;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
@ -100,6 +104,10 @@ public class BaseDistributorRest implements BaseDistributorFeign {
List<String> sidList = Arrays.asList(sids.split(","));
for (int i = 0; i < sidList.size(); i++) {
String sid = sidList.get(i);
BaseDistributor entity = baseDistributorService.fetchBySid(sid);
if (!entity.equals("待提交")) {
return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败");
}
int i1 = baseDistributorService.selByPDisSid(sid);
if (i1 > 0) {
return rb.setMsg("所选经销商已关联二级经销商,无法删除");
@ -188,6 +196,63 @@ public class BaseDistributorRest implements BaseDistributorFeign {
return rb.success().setData(list);
}
//---------------------------------------------- 流程接口 --------------------------------------------------/
@Override
public ResultBean submitRecordApplication(SubmitBaseDistributorApplyDto dto) {
return baseDistributorService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(BaseDistributorCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
return baseDistributorService.complete(bv);
}
@Override
public ResultBean companyToDivisionOperate(BaseDistributorCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
return baseDistributorService.companyToDivisionOperate(bv);
}
@Override
public ResultBean revokeProcess(BaseDistributorTaskQuery query) {
return baseDistributorService.revokeProcess(query);
}
@Override
public ResultBean taskReject(BaseDistributorTaskQuery query) {
return baseDistributorService.taskReject(query);
}
@Override
public ResultBean breakProcess(BaseDistributorTaskQuery query) {
return baseDistributorService.breakProcess(query);
}
@Override
public ResultBean flowRecord(String procInsId) {
return baseDistributorService.flowRecord(procInsId);
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return baseDistributorService.getNextNodesForSubmit(query);
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return baseDistributorService.getPreviousNodesForReject(query);
}
/******************************************************************************************************/
@Override
public ResultBean<PagerVo<BaseDistributorsListVo>> getDistributorList(PagerQuery<BaseDistributorsListQuery> pagerQuery) {
ResultBean<PagerVo<BaseDistributorsListVo>> rb = ResultBean.fireFail();
@ -276,4 +341,10 @@ public class BaseDistributorRest implements BaseDistributorFeign {
public ResultBean<BaseDistributorListVo> selectDisListBySid(String sid) {
return baseDistributorService.selectDisListBySid(sid);
}
/*-----------------------------------移动端流程------------------------------------------------*/
@Override
public ResultBean submitDistributor(AppSubmitDistributorApplyDto dto) {
return baseDistributorService.submitDistributor(dto);
}
}

708
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributor/BaseDistributorService.java

@ -1,10 +1,13 @@
package com.yxt.anrui.base.biz.basedistributor;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basedistributor.*;
import com.yxt.anrui.base.api.basedistributor.app.*;
import com.yxt.anrui.base.api.basedistributor.flow.*;
import com.yxt.anrui.base.api.basedistributorappendix.BaseDistributorAppendix;
import com.yxt.anrui.base.api.basedistributorappendix.BaseDistributorAppendixDto;
import com.yxt.anrui.base.api.basedistributorappendix.BaseDistributorAppendixVo;
@ -19,11 +22,22 @@ import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempListQuery;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempListVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingBillListVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserRoleQuery;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApply;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -31,11 +45,16 @@ import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
@ -71,6 +90,12 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private FinCompanyInvoicingFeign finCompanyInvoicingFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
/**
* 经销商分页列表
@ -156,6 +181,7 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
qw.apply(StringUtils.isNotBlank(setUpStartTime), "date_format (bd.setUpTime,'%Y-%m-%d') >= date_format('" + setUpStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(setUpEndTime), "date_format (bd.setUpTime,'%Y-%m-%d') <= date_format('" + setUpEndTime + "','%Y-%m-%d')"
);
qw.orderByDesc("bd.createTime");
}
return qw;
}
@ -219,6 +245,19 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
BaseDistributorVo baseDistributorVo = baseMapper.selBySid(sid);
BeanUtil.copyProperties(baseDistributorVo, baseDistributorDetailsVo);
baseDistributorDetailsVo.setSid(sid);
BaseDistributor baseDistributor = fetchBySid(sid);
if (StringUtils.isNotBlank(baseDistributor.getCreateBySid())) {
baseDistributorDetailsVo.setUserSid(baseDistributor.getCreateBySid());
}
if (StringUtils.isNotBlank(baseDistributor.getOrgSidPath())) {
baseDistributorDetailsVo.setOrgSidPath(baseDistributor.getOrgSidPath());
}
if (StringUtils.isNotBlank(baseDistributor.getTaskId())) {
baseDistributorDetailsVo.setTaskId(baseDistributor.getTaskId());
}
if (StringUtils.isNotBlank(baseDistributor.getProcInstId())) {
baseDistributorDetailsVo.setProcInsId(baseDistributor.getProcInstId());
}
List<BaseDistributorStaffVo> baseDistributorStaffVo = baseDistributorStaffService.selbyDistributorSid(sid);
baseDistributorDetailsVo.setPerList(baseDistributorStaffVo);
String[] split = s.split(",");
@ -308,17 +347,19 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
List<BaseDistributorAppendixDto> qtzlList = dto.getQtzlList();
List<BaseDistributorStaffDto> perList = dto.getPerList();
int count = selectNumCode(registNum);
if (count > 0) {
return rb.fail().setMsg("保存失败,统一社会信用代码已存在");
}
if (registNum.length() != 18 && registNum.length() != 9) {
return ResultBean.fireFail().setMsg("统一信用社会代码应为9位或18位");
}
// if (count > 0) {
// return rb.fail().setMsg("保存失败,统一社会信用代码已存在");
// }
// if (registNum.length() != 18 && registNum.length() != 9) {
// return rb.fireFail().setMsg("统一信用社会代码应为9位或18位");
// }
/*if (new Date().before(dto.getSetUpTime())) {
return rb.setMsg("成立时间不能晚于当前时间");
}*/
BaseDistributor baseDistributor = new BaseDistributor();
BeanUtil.copyProperties(dto, baseDistributor);
BeanUtil.copyProperties(dto, baseDistributor, "id", "sid");
baseDistributor.setCreateBySid(dto.getUserSid());
baseDistributor.setNodeState("待提交");
String pDistributorName = baseDistributor.getPDistributorName();
if (pDistributorName.equals("无")) {
baseDistributor.setDisLevelKey("0001");
@ -414,7 +455,8 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
return rb.setMsg("其他资料附件保存失败");
}
}
return rb.success().setMsg("保存成功");
String entitySid = baseDistributor.getSid();
return rb.success().setData(entitySid).setMsg("保存成功");
}
public ResultBean updateAll(BaseDistributorDto dto, String sid) {
@ -606,6 +648,28 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
qw.orderByDesc("bd.id");
}
IPage<BaseDistributorsVo> pagging = baseMapper.getDistributorListOne(page, qw);
List<BaseDistributorsVo> records = pagging.getRecords();
records.removeAll(Collections.singleton(null));
if (!records.isEmpty()) {
for (BaseDistributorsVo record : records) {
record.setUpdateBtn(false);
if (StringUtils.isNotBlank(record.getState())) {
if (record.getState().equals("已办结")) {
record.setState("备案通过");
}
if (record.getState().equals("终止")) {
record.setState("备案未通过");
}
if (record.getState().equals("待提交")) {
record.setState("未备案");
record.setUpdateBtn(true);
}
} else {
record.setState("未备案");
record.setUpdateBtn(true);
}
}
}
PagerVo<BaseDistributorsVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@ -617,6 +681,12 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
return rb.setMsg("该经销商不存在");
}
BaseDisDetailsVo vo = new BaseDisDetailsVo();
if (StringUtils.isNotBlank(baseDistributor.getTaskId())) {
vo.setTaskId(baseDistributor.getTaskId());
}
if (StringUtils.isNotBlank(baseDistributor.getProcInstId())) {
vo.setProcInstId(baseDistributor.getProcInstId());
}
BaseInfoVo baseInfoVo = baseMapper.getDistributorDetail(sid);
vo.setBaseInfo(baseInfoVo);
//开票信息
@ -647,6 +717,12 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
return rb.setMsg("该经销商不存在");
}
BaseDistribuDeailVo vo = new BaseDistribuDeailVo();
if (StringUtils.isNotBlank(baseDistributor.getTaskId())) {
vo.setTaskId(baseDistributor.getTaskId());
}
if (StringUtils.isNotBlank(baseDistributor.getProcInstId())) {
vo.setProcInstId(baseDistributor.getProcInstId());
}
//查询基础信息是否已完善
BaseDistributor distributor = baseMapper.selectBySid(sid);
if (distributor != null) {
@ -678,6 +754,9 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
if (baseDistributor == null) {
return rb.setMsg("该数据不存在");
}
if (!baseDistributor.getNodeState().equals("待提交")) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
baseDistributorAppendixService.delByLinkSid(sid);
baseDistributorStaffService.deleteStaff(sid);
deleteBySid(sid);
@ -740,11 +819,13 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
BaseDistributor baseDistributor = new BaseDistributor();
BeanUtil.copyProperties(dto, baseDistributor, "sid");
baseDistributor.setCreateBySid(userSid);
baseDistributor.setOrgSidPath(orgPath);
if (StringUtils.isBlank(orgPath)) {
orgPath = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
} else {
orgPath = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
}
baseDistributor.setNodeState("待提交");
//验证该分公司的经销商名称是否重复
BaseDistributor baseDistributor1 = baseMapper.selectNameByOne(orgPath, baseDistributor.getDisName());
if (baseDistributor1 != null) {
@ -974,4 +1055,613 @@ public class BaseDistributorService extends MybatisBaseService<BaseDistributorMa
}
return rb.success().setData(appDisAndCustms);
}
//-------------------------------------流程------------------------------------------------/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitBaseDistributorApplyDto dto, BaseDistributor baseDistributor) {
int r = 0;
if (org.apache.commons.lang3.StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (baseDistributor != null) {
String businessTaskId = baseDistributor.getTaskId();
if (org.apache.commons.lang3.StringUtils.isBlank(businessTaskId) && org.apache.commons.lang3.StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (org.apache.commons.lang3.StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
/**
* 提交备案申请
*
* @param dto
* @return
*/
public ResultBean submitRecordApplication(SubmitBaseDistributorApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
BaseDistributor baseDistributor = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, baseDistributor);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
String businessSid = "";
//新增修改保存
if (StringUtils.isNotBlank(dto.getSid())) {
ResultBean resultBean = updateAll(dto, dto.getSid());
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
businessSid = dto.getSid();
} else {
ResultBean<String> resultBean = saveAll(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
businessSid = resultBean.getData();
}
BaseDistributor entity = fetchBySid(businessSid);
String orgSidPath = "";
if (org.apache.commons.lang3.StringUtils.isNotBlank(entity.getOrgSidPath())) {
orgSidPath = entity.getOrgSidPath();
} else {
SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData();
if (null != data) {
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
}
}
List<String> orgPathList = Arrays.asList(orgSidPath.split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (org.apache.commons.lang3.StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("distributorSid", businessSid);
variables.put("app", appMap);
BaseDistributor baseDistributor1 = fetchBySid(businessSid);
String msgBusinessSid = baseDistributor1.getSid();
//用户的部门全路径sid
bv.setOrgSidPath(baseDistributor1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
String nextNodeUserSids_ = sysOrganization.getManagerSid();
bv.setNextNodeUserSids(nextNodeUserSids_);
//流程定义id
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
if (i > 0) {
//修改备案状态
BaseDistributor distributor = fetchBySid(businessSid);
distributor.setState(3);
baseMapper.updateById(distributor);
}
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
// busVehicleApply.set(fetchBySid(businessSid))
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(baseDistributor1.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
messageFlowableQuery.setMsgTitle("经销商备案");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (org.apache.commons.lang3.StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
BaseDistributor baseDistributor2 = fetchBySid(dto.getSid());
bv.setTaskId(dto.getTaskId());
bv.setTaskDefKey(baseDistributor2.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
BaseDistributor baseDistributor = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(baseDistributor.getTaskId())) {
bv.setOrgSidPath(baseDistributor.getOrgSidPath());
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
BaseDistributor entity = fetchBySid(businessSid);
entity.setState(2);
entity.setClosingDate(new Date());
//办结日期
baseMapper.updateById(entity);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
//-----------------------------------------移动端流程-----------------------------------------------/
/**
* 移动端判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int appSubmitBusinessData(AppSubmitDistributorApplyDto dto, BaseDistributor baseDistributor) {
int r = 0;
if (org.apache.commons.lang3.StringUtils.isBlank(dto.getDistributorSid())) {
r = 1;
} else {
if (baseDistributor != null) {
String businessTaskId = baseDistributor.getTaskId();
if (org.apache.commons.lang3.StringUtils.isBlank(businessTaskId) && org.apache.commons.lang3.StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (org.apache.commons.lang3.StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
public ResultBean submitDistributor(AppSubmitDistributorApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
String businessSid = dto.getDistributorSid();
BaseDistributor baseDistributor = fetchBySid(businessSid);
int r = appSubmitBusinessData(dto, baseDistributor);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//-----------判断开票信息是否完事是否可以提交------------------------
BaseInvoiceInfoVo invoiceInfoVo = getDistributorInvoiceInfo(businessSid).getData();
if (null == invoiceInfoVo) {
return rb.setMsg("请完善开票信息");
} else {
if (StringUtils.isBlank(invoiceInfoVo.getInvoPhone())
|| StringUtils.isBlank(invoiceInfoVo.getInvoBank())
|| StringUtils.isBlank(invoiceInfoVo.getInvoBankNum())
|| StringUtils.isBlank(invoiceInfoVo.getRegistNum())
|| StringUtils.isBlank(invoiceInfoVo.getRegistDetailAddress())
) {
return rb.setMsg("请完善开票信息");
}
}
//------------------------------------------------------------
BaseDistributor entity = fetchBySid(businessSid);
String orgSidPath = "";
if (org.apache.commons.lang3.StringUtils.isNotBlank(entity.getOrgSidPath())) {
orgSidPath = baseDistributor.getOrgSidPath();
} else {
SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData();
if (null != data) {
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
}
}
List<String> orgPathList = Arrays.asList(orgSidPath.split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (org.apache.commons.lang3.StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("distributorSid", businessSid);
variables.put("app", appMap);
BaseDistributor baseDistributor1 = fetchBySid(businessSid);
String msgBusinessSid = baseDistributor1.getSid();
//用户的部门全路径sid
bv.setOrgSidPath(baseDistributor1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(baseDistributor1.getCreateBySid());
bv.setFormVariables(variables);
String nextNodeUserSids_ = sysOrganization.getManagerSid();
bv.setNextNodeUserSids(nextNodeUserSids_);
//流程定义id
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.DEALERFILINGAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
if (i > 0) {
//修改备案状态
BaseDistributor updateState = fetchBySid(businessSid);
updateState.setState(3);
baseMapper.updateById(updateState);
}
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
// busVehicleApply.set(fetchBySid(businessSid))
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(baseDistributor1.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
messageFlowableQuery.setMsgTitle("经销商备案");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (org.apache.commons.lang3.StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(baseDistributor.getTaskId());
bv.setTaskDefKey(baseDistributor.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
/**
* 分公司跨风控办理
*
* @param bv
* @return
*/
public ResultBean companyToDivisionOperate(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
BaseDistributor baseDistributor = fetchBySid(bv.getBusinessSid());
bv.setOrgSidPath(baseDistributor.getOrgSidPath());
Map<String, Object> variables = bv.getFormVariables();
baseDistributor = fetchBySid(bv.getBusinessSid());
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(baseDistributor.getProcDefId());
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserRoleQuery userRoleQuery = new UserRoleQuery();
userRoleQuery.setRoleSid(candidateGroups.get(0));
List<SysUserVo> sysUserVos = sysUserFeign.getOtherOrgRoleUser(userRoleQuery).getData();
StringBuilder nextNodeUserSids = new StringBuilder();
if (sysUserVos.size() > 0) {
for (SysUserVo sysUserVo : sysUserVos) {
String sid = sysUserVo.getSid();
nextNodeUserSids.append(sid).append(",");
}
}
if (org.apache.commons.lang3.StringUtils.isBlank(nextNodeUserSids)) {
return rb.setMsg("下一环节暂无操作人员");
}
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
if (bv.getTaskId().equals(baseDistributor.getTaskId())) {
variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("distributorSid", bv.getBusinessSid());
variables.put("app", appMap);
//========================================
baseDistributor = fetchBySid(bv.getBusinessSid());
flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(baseDistributor.getProcDefId());
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.handleProsess(bv);
if (!resultBean1.getSuccess()) {
return rb.setMsg(resultBean1.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean1.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean1.getData()));
//极光推送
baseDistributor = fetchBySid(bv.getBusinessSid());
SysUserVo userVo = sysUserFeign.fetchBySid(baseDistributor.getCreateBySid()).getData();
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcInsId(baseDistributor.getProcInstId());
messageFlowVo.setProcDefId(baseDistributor.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("经销商备案");
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("经销商备案");
messageFeign.pushMessage(messageFlowableQuery);
return rb.success().setData(resultBean1.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean revokeProcess(BaseDistributorTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
BaseDistributor baseDistributor = fetchBySid(query.getBusinessSid());
String businessTaskId = baseDistributor.getTaskId();
if (org.apache.commons.lang3.StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean taskReject(BaseDistributorTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
BaseDistributor baseDistributor = fetchBySid(businessSid);
if (baseDistributor == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = baseDistributor.getTaskId();
if (org.apache.commons.lang3.StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("distributorSid", businessSid);
variables.put("app", appMap);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
baseDistributor = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = baseDistributor.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(baseDistributor.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("经销商备案");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> 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(baseDistributor.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
}
messageFlowableQuery.setMsgTitle("经销商备案");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean breakProcess(BaseDistributorTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (org.apache.commons.lang3.StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
BaseDistributor baseDistributor = fetchBySid(query.getBusinessSid());
String businessTaskId = baseDistributor.getTaskId();
if (org.apache.commons.lang3.StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(baseDistributor.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> 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<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> 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<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
BaseDistributor baseDistributor = fetchBySid(query.getBusinessSid());
bv.setFormVariables(variables);
bv.setModelId(baseDistributor.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
BaseDistributor baseDistributor = fetchBySid(query.getBusinessSid());
bv.setFormVariables(variables);
bv.setModelId(baseDistributor.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
}

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml

@ -1244,7 +1244,7 @@
<select id="selVehicleByVinNoAndOrgSid" resultType="com.yxt.anrui.base.api.basevehicle.BaseVehicle">
SELECT *
FROM base_vehicle
WHERE vinNo = #{vinNo}
WHERE vinNo LIKE concat('%', #{vinNo}, '%')
AND createOrgSid = #{createOrgSid}
AND isDelete = 0
AND vehicleState != "0004"

12
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeliveredapply/FinSelectVo.java

@ -10,7 +10,7 @@ import lombok.Data;
*/
@Data
public class FinSelectVo {
private String receivablesSid;
@ApiModelProperty("款项名称")
private String receivablesName;
@ -23,4 +23,14 @@ public class FinSelectVo {
private String notSubscriptionMoney;
private String remarks;
@ApiModelProperty("付款时间")
private String subscriptionDate;
@ApiModelProperty("收款开户行")
private String collectionBank;
@ApiModelProperty("收款账户")
private String receivingName;
@ApiModelProperty("付款人")
private String payerName;
@ApiModelProperty("付款时间")
private String collectionDate;
}

274
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java

@ -82,9 +82,14 @@ import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplicationDto;
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplicationFeign;
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleDto;
import com.yxt.anrui.fin.api.fincollectionconfirmation.FinCollectionConfirmationDetailsVo;
import com.yxt.anrui.fin.api.fincollectionconfirmation.FinCollectionConfirmationFeign;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed;
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedVo;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.ReceiveInvoiceVo;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.ReceiveSeleteVo;
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoice;
@ -204,6 +209,11 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
private LoanSolutionsFeign loanSolutionsFeign;
@Autowired
private FinVehicleInvoiceFeign finVehicleInvoiceFeign;
@Autowired
private FinSelectedReceivablesDetailedFeign finSelectedReceivablesDetailedFeign;
@Autowired
private FinCollectionConfirmationFeign finCollectionConfirmationFeign;
/**
* 构造出库申请的查询条件
@ -258,13 +268,13 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
qw.eq("bd.paymentMethodKey", query.getPaymentMethodKey());
}
//========================================数据授权开始
if(StringUtils.isNotBlank(query.getMenuUrl())){
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getApplySid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if(StringUtils.isNotBlank(defaultIdReltBean.getData())){
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
@ -285,17 +295,17 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("bd.orgSidPath", orgSidPath);
} else if("5".equals(orgLevelKey)){
qw.eq("bd.createBySid",query.getApplySid());
}else{
} else if ("5".equals(orgLevelKey)) {
qw.eq("bd.createBySid", query.getApplySid());
} else {
PagerVo<BusDeliveredApplyVo> p = new PagerVo<>();
return p;
}
}else{
} else {
PagerVo<BusDeliveredApplyVo> p = new PagerVo<>();
return p;
}
}else{
} else {
qw.eq("bd.applySid", query.getApplySid());
}
}
@ -303,9 +313,9 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
IPage<BusDeliveredApplyVo> pagging = baseMapper.selectPageVo(page, qw);
List<BusDeliveredApplyVo> records = pagging.getRecords();
for (BusDeliveredApplyVo record : records) {
if(query.getApplySid().equals(record.getCreateBySid())){
if (query.getApplySid().equals(record.getCreateBySid())) {
record.setAllowModify(true);
}else{
} else {
record.setAllowModify(false);
}
}
@ -726,7 +736,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
ResultBean rb = ResultBean.fireFail();
BusDeliveredApply busDeliveredApply = fetchBySid(bv.getBusinessSid());
bv.setOrgSidPath(busDeliveredApply.getOrgSidPath());
Map<String,Object> variables = new HashMap<>();
Map<String, Object> variables = new HashMap<>();
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
@ -736,24 +746,24 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
variables.put("app", appMap);
// variables.put("isDanBao","2".equals(busDeliveredApply.getPaymentMethodKey()));
//根据合同号查询销售订单
if(!"2".equals(busDeliveredApply.getPaymentMethodKey())){
if (!"2".equals(busDeliveredApply.getPaymentMethodKey())) {
BusSalesOrder busSalesOrder = busSalesOrderService.selectByContractNos(busDeliveredApply.getContractNo());
if("2".equals(busSalesOrder.getFinancePlan())){
if ("2".equals(busSalesOrder.getFinancePlan())) {
//查询是否是自营非担保
ResultBean<SolutionsDetailsVo> detailsVoResultBean = loanSolutionsFeign.selectDetailsss(busSalesOrder.getSid());
if(detailsVoResultBean.getData() != null){
if("01".equals(detailsVoResultBean.getData().getTypeKey())){
if (detailsVoResultBean.getData() != null) {
if ("01".equals(detailsVoResultBean.getData().getTypeKey())) {
//自营非担保
variables.put("isDanBao",true);
}else{
variables.put("isDanBao",false);
variables.put("isDanBao", true);
} else {
variables.put("isDanBao", false);
}
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",true);
} else {
variables.put("isDanBao", true);
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(busDeliveredApply.getProcDefId());
@ -815,12 +825,12 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
for (BusDeliveredApplyDetails busDeliveredApplyDetail : busDeliveredApplyDetails) {
String vinSid = busDeliveredApplyDetail.getVinSid();
FinVehicleInvoice finVehicleInvoice = finVehicleInvoiceFeign.selectByVinAndContractNo(vinSid, busDeliveredApply.getContractNo()).getData();
if(finVehicleInvoice != null){
if (StringUtils.isNotBlank(finVehicleInvoice.getSid())){
if (finVehicleInvoice != null) {
if (StringUtils.isNotBlank(finVehicleInvoice.getSid())) {
finVehicleInvoiceFeign.updateBySid(finVehicleInvoice.getSid());
}
}
}
} else {
if ("重新提交".equals(bv.getComment())) {
@ -888,8 +898,8 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
appBusHandoverPrepareVehicleDto.setVinNo(details.getVinNo());
appBusHandoverPrepareVehicleDto.setVinSid(details.getVinSid());
//根据合同编号和车辆sid查询
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleService.selectByNoAndVinSid(busDeliveredApply.getContractNo(),details.getVinSid());
BusDelivered busDelivered = busDeliveredService.getState(busDeliveredApply.getContractNo(),busSalesOrderVehicle.getSid());
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleService.selectByNoAndVinSid(busDeliveredApply.getContractNo(), details.getVinSid());
BusDelivered busDelivered = busDeliveredService.getState(busDeliveredApply.getContractNo(), busSalesOrderVehicle.getSid());
appBusHandoverPrepareVehicleDto.setSubscription(busDelivered.getSubscription());
appBusHandoverPrepareVehicleDto.setSubscriptionKey(busDelivered.getSubscriptionKey());
dtos.add(appBusHandoverPrepareVehicleDto);
@ -1196,10 +1206,10 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
ResultBean<List<GetNodeVo>> rb = new ResultBean<>();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
if(StringUtils.isNotBlank(query.getBusinessSid())){
if (StringUtils.isNotBlank(query.getBusinessSid())) {
BusDeliveredApply busDeliveredApply = fetchBySid(query.getBusinessSid());
bv.setModelId(busDeliveredApply.getProcDefId());
Map<String,Object> variables = new HashMap<>();
Map<String, Object> variables = new HashMap<>();
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
@ -1208,25 +1218,25 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
appMap.put("contract_id", busDeliveredApply.getContractNo());
variables.put("app", appMap);
// variables.put("isDanBao","2".equals(busDeliveredApply.getPaymentMethodKey()));
//根据合同号查询销售订单
if(!"2".equals(busDeliveredApply.getPaymentMethodKey())){
//根据合同号查询销售订单
if (!"2".equals(busDeliveredApply.getPaymentMethodKey())) {
BusSalesOrder busSalesOrder = busSalesOrderService.selectByContractNos(busDeliveredApply.getContractNo());
if("2".equals(busSalesOrder.getFinancePlan())){
if ("2".equals(busSalesOrder.getFinancePlan())) {
//查询是否是自营非担保
ResultBean<SolutionsDetailsVo> detailsVoResultBean = loanSolutionsFeign.selectDetailsss(busSalesOrder.getSid());
if(detailsVoResultBean.getData() != null){
if("01".equals(detailsVoResultBean.getData().getTypeKey())){
if (detailsVoResultBean.getData() != null) {
if ("01".equals(detailsVoResultBean.getData().getTypeKey())) {
//自营非担保
variables.put("isDanBao",true);
}else{
variables.put("isDanBao",false);
variables.put("isDanBao", true);
} else {
variables.put("isDanBao", false);
}
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",true);
} else {
variables.put("isDanBao", true);
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(busDeliveredApply.getProcDefId());
@ -1234,7 +1244,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
flowProcessMapQuery.setContractNo(busDeliveredApply.getContractNo());
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
bv.setFormVariables(variables);
}else{
} else {
bv.setModelId(ProcDefEnum.BUSDELIVEREDAPPLY.getProDefId());
}
@ -1254,10 +1264,10 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
if(StringUtils.isNotBlank(query.getBusinessSid())){
if (StringUtils.isNotBlank(query.getBusinessSid())) {
BusDeliveredApply busDeliveredApply = fetchBySid(query.getBusinessSid());
bv.setModelId(busDeliveredApply.getProcDefId());
Map<String,Object> variables = new HashMap<>();
Map<String, Object> variables = new HashMap<>();
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
@ -1266,25 +1276,25 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
appMap.put("contract_id", busDeliveredApply.getContractNo());
variables.put("app", appMap);
// variables.put("isDanBao","2".equals(busDeliveredApply.getPaymentMethodKey()));
//根据合同号查询销售订单
if(!"2".equals(busDeliveredApply.getPaymentMethodKey())){
//根据合同号查询销售订单
if (!"2".equals(busDeliveredApply.getPaymentMethodKey())) {
BusSalesOrder busSalesOrder = busSalesOrderService.selectByContractNos(busDeliveredApply.getContractNo());
if("2".equals(busSalesOrder.getFinancePlan())){
if ("2".equals(busSalesOrder.getFinancePlan())) {
//查询是否是自营非担保
ResultBean<SolutionsDetailsVo> detailsVoResultBean = loanSolutionsFeign.selectDetailsss(busSalesOrder.getSid());
if(detailsVoResultBean.getData() != null){
if("01".equals(detailsVoResultBean.getData().getTypeKey())){
if (detailsVoResultBean.getData() != null) {
if ("01".equals(detailsVoResultBean.getData().getTypeKey())) {
//自营非担保
variables.put("isDanBao",true);
}else{
variables.put("isDanBao",false);
variables.put("isDanBao", true);
} else {
variables.put("isDanBao", false);
}
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",true);
} else {
variables.put("isDanBao", true);
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(busDeliveredApply.getProcDefId());
@ -1292,7 +1302,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
flowProcessMapQuery.setContractNo(busDeliveredApply.getContractNo());
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
bv.setFormVariables(variables);
}else{
} else {
bv.setModelId(ProcDefEnum.BUSDELIVEREDAPPLY.getProDefId());
}
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
@ -1327,25 +1337,25 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
appMap.put("contract_id", busDeliveredApply.getContractNo());
variables.put("app", appMap);
// variables.put("isDanBao","2".equals(busDeliveredApply.getPaymentMethodKey()));
//根据合同号查询销售订单
if(!"2".equals(busDeliveredApply.getPaymentMethodKey())){
//根据合同号查询销售订单
if (!"2".equals(busDeliveredApply.getPaymentMethodKey())) {
BusSalesOrder busSalesOrder = busSalesOrderService.selectByContractNos(busDeliveredApply.getContractNo());
if("2".equals(busSalesOrder.getFinancePlan())){
if ("2".equals(busSalesOrder.getFinancePlan())) {
//查询是否是自营非担保
ResultBean<SolutionsDetailsVo> detailsVoResultBean = loanSolutionsFeign.selectDetailsss(busSalesOrder.getSid());
if(detailsVoResultBean.getData() != null){
if("01".equals(detailsVoResultBean.getData().getTypeKey())){
if (detailsVoResultBean.getData() != null) {
if ("01".equals(detailsVoResultBean.getData().getTypeKey())) {
//自营非担保
variables.put("isDanBao",true);
}else{
variables.put("isDanBao",false);
variables.put("isDanBao", true);
} else {
variables.put("isDanBao", false);
}
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",true);
} else {
variables.put("isDanBao", true);
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(busDeliveredApply.getProcDefId());
@ -1428,25 +1438,25 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
appMap.put("contract_id", busDeliveredApply.getContractNo());
variables.put("app", appMap);
// variables.put("isDanBao","2".equals(busDeliveredApply.getPaymentMethodKey()));
//根据合同号查询销售订单
if(!"2".equals(busDeliveredApply.getPaymentMethodKey())){
//根据合同号查询销售订单
if (!"2".equals(busDeliveredApply.getPaymentMethodKey())) {
BusSalesOrder busSalesOrder = busSalesOrderService.selectByContractNos(busDeliveredApply.getContractNo());
if("2".equals(busSalesOrder.getFinancePlan())){
if ("2".equals(busSalesOrder.getFinancePlan())) {
//查询是否是自营非担保
ResultBean<SolutionsDetailsVo> detailsVoResultBean = loanSolutionsFeign.selectDetailsss(busSalesOrder.getSid());
if(detailsVoResultBean.getData() != null){
if("01".equals(detailsVoResultBean.getData().getTypeKey())){
if (detailsVoResultBean.getData() != null) {
if ("01".equals(detailsVoResultBean.getData().getTypeKey())) {
//自营非担保
variables.put("isDanBao",true);
}else{
variables.put("isDanBao",false);
variables.put("isDanBao", true);
} else {
variables.put("isDanBao", false);
}
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",true);
} else {
variables.put("isDanBao", true);
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(busDeliveredApply.getProcDefId());
@ -1495,7 +1505,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
BusDeliveredApply busDeliveredApply = fetchBySid(query.getBusinessSid());
String businessTaskId = busDeliveredApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if(query.getUserSid().equals(busDeliveredApply.getCreateBySid())){
if (query.getUserSid().equals(busDeliveredApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
@ -1508,7 +1518,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
//更新该合同的该车架号的状态为1
busDeliveredService.updateStateByContractNo(busDeliveredApply.getContractNo(), vinSidList, 1);
return rb.success().setData(resultBean.getData());
}else{
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
@ -1540,14 +1550,14 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
QueryWrapper<AppDeliveredApplyPageQuery> qw = new QueryWrapper<>();
String orgPath = pagerQuery.getParams().getOrgPath();
//========================================数据授权开始
if(StringUtils.isNotBlank(query.getMenuSid())){
if (StringUtils.isNotBlank(query.getMenuSid())) {
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuSid(query.getMenuSid());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if(StringUtils.isNotBlank(defaultIdReltBean.getData())){
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
@ -1568,17 +1578,17 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("bd.orgSidPath", orgSidPath);
} else if("5".equals(orgLevelKey)){
qw.eq("bd.createBySid",query.getUserSid());
}else{
} else if ("5".equals(orgLevelKey)) {
qw.eq("bd.createBySid", query.getUserSid());
} else {
PagerVo<AppDeliveredApplyPageVo> p = new PagerVo<>();
return p;
}
}else{
} else {
PagerVo<AppDeliveredApplyPageVo> p = new PagerVo<>();
return p;
}
}else{
} else {
String orgSid = "";
if (StringUtils.isNotBlank(orgPath)) {
orgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
@ -1592,16 +1602,16 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
IPage<AppDeliveredApplyPageVo> iPage = baseMapper.getRetrievalApplyList(page, qw, pagerQuery.getParams().getName());
List<AppDeliveredApplyPageVo> records = iPage.getRecords();
records.removeAll(Collections.singleton(null));
if(!records.isEmpty()){
for (AppDeliveredApplyPageVo appDeliveredApplyPageVo : records){
if(query.getUserSid().equals(appDeliveredApplyPageVo.getCreateBySid()) && appDeliveredApplyPageVo.isShowDelete()){
if (!records.isEmpty()) {
for (AppDeliveredApplyPageVo appDeliveredApplyPageVo : records) {
if (query.getUserSid().equals(appDeliveredApplyPageVo.getCreateBySid()) && appDeliveredApplyPageVo.isShowDelete()) {
appDeliveredApplyPageVo.setShowDelete(true);
}else{
} else {
appDeliveredApplyPageVo.setShowDelete(false);
}
if(query.getUserSid().equals(appDeliveredApplyPageVo.getCreateBySid()) && appDeliveredApplyPageVo.isShowUpdata()){
if (query.getUserSid().equals(appDeliveredApplyPageVo.getCreateBySid()) && appDeliveredApplyPageVo.isShowUpdata()) {
appDeliveredApplyPageVo.setShowUpdata(true);
}else{
} else {
appDeliveredApplyPageVo.setShowUpdata(false);
}
}
@ -1739,10 +1749,10 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
busDeliveredDetailsDiscountService.insert(busDeliveredDetailsDiscount);
discountAll = discountAll.add(new BigDecimal(busDeliveredDetailsDiscount.getPrice()).multiply(new BigDecimal(busDeliveredDetailsDiscount.getGiveNum())));
if (j == 0 || j == discountUse.size() - 1) {
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName()+busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName() + busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
discountRemarks = discountRemarks.append(disInfo).append(",");
} else {
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName()+busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName() + busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
discountRemarks = discountRemarks.append(disInfo);
}
}
@ -1885,10 +1895,10 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
busDeliveredDetailsDiscountService.insert(busDeliveredDetailsDiscount);
discountAll = discountAll.add(new BigDecimal(busDeliveredDetailsDiscount.getPrice()).multiply(new BigDecimal(busDeliveredDetailsDiscount.getGiveNum())));
if (j == 0 || j == discountUse.size() - 1) {
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName()+busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName() + busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
discountRemarks = discountRemarks.append(disInfo).append(",");
} else {
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName()+busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
String disInfo = busDeliveredDetailsDiscountsVo.getDiscountName() + busDeliveredDetailsDiscountsVo.getDiscountInfo() + "X" + busDeliveredDetailsDiscount.getGiveNum();
discountRemarks = discountRemarks.append(disInfo);
}
}
@ -2083,18 +2093,18 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
//所有车辆与已出库或审批中的车辆集合查询出差集
busSidList.removeAll(applyBusSidList);
//根据合同编号以及车辆sid查询busVinSid
List<String> busVinSidList = baseMapper.selectByContractNoToVinSid(dto.getContractId(),vinSid);
List<String> busVinSidList = baseMapper.selectByContractNoToVinSid(dto.getContractId(), vinSid);
busSidList.removeAll(busVinSidList);
busVinSidList.removeAll(Collections.singleton(null));
if(busVinSidList.isEmpty()){
if (busVinSidList.isEmpty()) {
isTrue = true;
}
//是否是最后一批出库车辆
if(isTrue){
if (isTrue) {
//是否存在未赠送的套餐,如果存在则不允许提交
int num = baseMapper.selectNumByContractNo(dto.getContractId());
int orderNum = busSalesOrderDiscountService.selectByContractNo(dto.getContractId());
if(orderNum>num){
if (orderNum > num) {
return rb.setMsg("本次出库为该订单最后一批出库,还存在未赠送的套餐,不允许提交");
}
}
@ -2142,26 +2152,26 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
appMap.put("contract_id", busDeliveredApply.getContractNo());
variables.put("app", appMap);
//根据合同号查询销售订单
if(!"2".equals(busDeliveredApply.getPaymentMethodKey())){
if (!"2".equals(busDeliveredApply.getPaymentMethodKey())) {
BusSalesOrder busSalesOrder = busSalesOrderService.selectByContractNos(busDeliveredApply.getContractNo());
if("2".equals(busSalesOrder.getFinancePlan())){
if ("2".equals(busSalesOrder.getFinancePlan())) {
//查询是否是自营非担保
ResultBean<SolutionsDetailsVo> detailsVoResultBean = loanSolutionsFeign.selectDetailsss(busSalesOrder.getSid());
if(detailsVoResultBean.getData() != null){
if("01".equals(detailsVoResultBean.getData().getTypeKey())){
if (detailsVoResultBean.getData() != null) {
if ("01".equals(detailsVoResultBean.getData().getTypeKey())) {
//自营非担保
variables.put("isDanBao",true);
}else{
variables.put("isDanBao",false);
variables.put("isDanBao", true);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",false);
} else {
variables.put("isDanBao", false);
}
}else{
variables.put("isDanBao",true);
} else {
variables.put("isDanBao", true);
}
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
@ -2265,7 +2275,37 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
if (receiveInvoiceVoResultBean.getData() != null) {
List<ReceiveSeleteVo> receiveSeleteVoList = receiveInvoiceVoResultBean.getData().getReceiveSeleteVoList();
List<FinSelectVo> voList = Optional.ofNullable(receiveSeleteVoList).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), FinSelectVo.class)).collect(Collectors.toList());
deliveredFinVo.setFinSelectVoList(voList);
voList.removeAll(Collections.singleton(null));
List<FinSelectVo> finSelectVos = new ArrayList<>();
if (!voList.isEmpty()) {
for (FinSelectVo finSelectVo : voList) {
String receivablesSid = finSelectVo.getReceivablesSid();
FinSelectedReceivablesDetailed data = finSelectedReceivablesDetailedFeign.fetchByReceivablesSidLimt(receivablesSid).getData();
if (data != null) {
String collSid = data.getCollSid();
if (StringUtils.isNotBlank(data.getSubscriptionDate())) {
finSelectVo.setSubscriptionDate(data.getSubscriptionDate());
}
FinCollectionConfirmationDetailsVo confirmationDetailsVo = finCollectionConfirmationFeign.fetchBySid(collSid).getData();
if (null != confirmationDetailsVo) {
if (StringUtils.isNotBlank(confirmationDetailsVo.getCollectionBank())) {
finSelectVo.setCollectionBank(confirmationDetailsVo.getCollectionBank());
}
if (StringUtils.isNotBlank(confirmationDetailsVo.getReceivingName())) {
finSelectVo.setReceivingName(confirmationDetailsVo.getReceivingName());
}
if (StringUtils.isNotBlank(confirmationDetailsVo.getPayerName())) {
finSelectVo.setPayerName(confirmationDetailsVo.getPayerName());
}
if (StringUtils.isNotBlank(confirmationDetailsVo.getCollectionDate())) {
finSelectVo.setCollectionDate(confirmationDetailsVo.getCollectionDate());
}
}
}
finSelectVos.add(finSelectVo);
}
}
deliveredFinVo.setFinSelectVoList(finSelectVos);
InvoiceVo invoiceVo = receiveInvoiceVoResultBean.getData().getInvoiceVo();
if (invoiceVo != null) {
VinInvoiceVo vinInvoiceVo = new VinInvoiceVo();

3
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bushandover/BusHandoverService.java

@ -1306,7 +1306,8 @@ public class BusHandoverService extends MybatisBaseService<BusHandoverMapper, Bu
}
dataMap.put("newList", newList);
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vinDataHandover.ftl");
// InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vinDataHandover.ftl");
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vinHandoverData.ftl");
//生成word文件名
String targetPath = docPdfComponent.getUploadTemplateUrl();
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");

137
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java

@ -138,6 +138,7 @@ import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.UnCollectionDto;
import com.yxt.anrui.flowable.api.flow.FlowSelectVo;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.FlowableQuery;
@ -252,6 +253,8 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private FlowTaskFeign flowTaskFeign;
@ -3471,50 +3474,53 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
}
BusSalesOrderMakeup busSalesOrderMakeup = busSalesOrderMakeupService.detailsss(sid);
String topMessage = "";
//颜色
if (StringUtils.isNotBlank(busSalesOrderMakeup.getColor())) {
topMessage = topMessage + busSalesOrderMakeup.getColor();
}
if (StringUtils.isNotBlank(busSalesOrderMakeup.getTopName())) {
topMessage = topMessage + busSalesOrderMakeup.getTopName();
}
//板材厚度
String ssMessage = "";
if (StringUtils.isNotBlank(busSalesOrderMakeup.getThicknessBottom())) {
ssMessage = "底" + busSalesOrderMakeup.getThicknessBottom() + "mm";
}
if (StringUtils.isNotBlank(busSalesOrderMakeup.getThicknessEdge())) {
ssMessage = ssMessage + "边" + busSalesOrderMakeup.getThicknessEdge() + "mm";
}
if (StringUtils.isNotBlank(ssMessage)) {
topMessage = topMessage + "、" + ssMessage;
}
if (StringUtils.isNotBlank(busSalesOrderMakeup.getPlateMaterial())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getPlateMaterial();
}
//篷布滑道
if (StringUtils.isNotBlank(busSalesOrderMakeup.getTarpaulinSlide()) && !"-".equals(busSalesOrderMakeup.getTarpaulinSlide())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getTarpaulinSlide();
}
//冷藏冷机
if (StringUtils.isNotBlank(busSalesOrderMakeup.getRefirgerator())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getRefirgerator();
if (!busSalesOrderMakeup.getRefirgerator().contains("机")) {
topMessage = topMessage + "冷机";
if(busSalesOrderMakeup != null){
//颜色
if (StringUtils.isNotBlank(busSalesOrderMakeup.getColor())) {
topMessage = topMessage + busSalesOrderMakeup.getColor();
}
if (StringUtils.isNotBlank(busSalesOrderMakeup.getTopName())) {
topMessage = topMessage + busSalesOrderMakeup.getTopName();
}
//板材厚度
String ssMessage = "";
if (StringUtils.isNotBlank(busSalesOrderMakeup.getThicknessBottom())) {
ssMessage = "底" + busSalesOrderMakeup.getThicknessBottom() + "mm";
}
if (StringUtils.isNotBlank(busSalesOrderMakeup.getThicknessEdge())) {
ssMessage = ssMessage + "边" + busSalesOrderMakeup.getThicknessEdge() + "mm";
}
if (StringUtils.isNotBlank(ssMessage)) {
topMessage = topMessage + "、" + ssMessage;
}
if (StringUtils.isNotBlank(busSalesOrderMakeup.getPlateMaterial())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getPlateMaterial();
}
//篷布滑道
if (StringUtils.isNotBlank(busSalesOrderMakeup.getTarpaulinSlide()) && !"-".equals(busSalesOrderMakeup.getTarpaulinSlide())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getTarpaulinSlide();
}
//冷藏冷机
if (StringUtils.isNotBlank(busSalesOrderMakeup.getRefirgerator())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getRefirgerator();
if (!busSalesOrderMakeup.getRefirgerator().contains("机")) {
topMessage = topMessage + "冷机";
}
}
//自卸液压盖板
if (StringUtils.isNotBlank(busSalesOrderMakeup.getSelfUnHyCoPl()) && !"-".equals(busSalesOrderMakeup.getSelfUnHyCoPl())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getSelfUnHyCoPl();
}
//底板加热
if (StringUtils.isNotBlank(busSalesOrderMakeup.getFloorHeating()) && !"-".equals(busSalesOrderMakeup.getFloorHeating())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getFloorHeating();
}
//更多配置
if (StringUtils.isNotBlank(busSalesOrderMakeup.getMoreConfig()) && !"-".equals(busSalesOrderMakeup.getMoreConfig())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getMoreConfig();
}
}
//自卸液压盖板
if (StringUtils.isNotBlank(busSalesOrderMakeup.getSelfUnHyCoPl()) && !"-".equals(busSalesOrderMakeup.getSelfUnHyCoPl())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getSelfUnHyCoPl();
}
//底板加热
if (StringUtils.isNotBlank(busSalesOrderMakeup.getFloorHeating()) && !"-".equals(busSalesOrderMakeup.getFloorHeating())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getFloorHeating();
}
//更多配置
if (StringUtils.isNotBlank(busSalesOrderMakeup.getMoreConfig()) && !"-".equals(busSalesOrderMakeup.getMoreConfig())) {
topMessage = topMessage + "、" + busSalesOrderMakeup.getMoreConfig();
}
vo.setTopMessage(topMessage);
}
/***************************主车优惠***************************************/
@ -4763,7 +4769,7 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
//流程定义id
bv.setModelId(ProcDefEnum.SALESORDER.getProDefId());
if (r == 1) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
@ -4819,7 +4825,7 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
} catch (Exception e) {
e.printStackTrace();
}
//==============================
/* //==============================
//如果创建人与部门主管一样,则自动到下一环节。
if (busSalesOrder.get().getCreateBySid().equals(nextNodeUserSids_)) {
busSalesOrderOne = fetchBySid(businessSid);
@ -4835,7 +4841,7 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
bv.setOrgSidPath(busSalesOrderOne.getOrgSidPath());
bv.setComment("因与申请人相同,系统自动处理,需以下一级审批人审批意见为准!");
return complete(bv);
}
}*/
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
@ -5121,28 +5127,39 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
//流程定义id
bv.setModelId(busSalesOrder.getProcDefId());
if (bv.getTaskId().equals(busSalesOrder.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
busSalesOrder = fetchBySid(bv.getBusinessSid());
//极光推送
if (!"Event_end".equals(resultBean.getData().getTaskDefKey())) {
//极光推送
busSalesOrder = fetchBySid(bv.getBusinessSid());
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcInsId(busSalesOrder.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) variables.get("app"));
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("销售订单申请");
messageFlowableQuery.setMsgContent(busSalesOrder.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("销售订单");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
BusSalesOrder finalBusSalesOrder = busSalesOrder;
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcInsId(finalBusSalesOrder.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) variables.get("app"));
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("销售订单申请");
messageFlowableQuery.setMsgContent(finalBusSalesOrder.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("销售订单");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
} else {
ResultBean<AppOrderDetailsVo> details = getSaleOrderDetails(bv.getBusinessSid());
AppOrderDetailsVo vo = details.getData();

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busvehicledatahandover/BusVehicleDataHandoverService.java

@ -235,7 +235,7 @@ public class BusVehicleDataHandoverService extends MybatisBaseService<BusVehicle
}
dataMap.put("newList", newList);
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vehicledatahandover.ftl");
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vinHandoverData.ftl");
//生成word文件名
String targetPath = docPdfComponent.getUploadTemplateUrl();
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");

34
anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/receiveVehicleConfirmation.ftl

@ -1410,10 +1410,18 @@
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t xml:space="preserve"> </w:t>
<w:t xml:space="preserve"> </w:t>
</w:r>
<#-- <w:r>-->
<#-- <w:t>_____</w:t>-->
<#-- </w:r>-->
<w:r>
<w:t>_____</w:t>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
<w:sz w:val="24"/>
<w:u w:val="single"/>
</w:rPr>
<w:t xml:space="preserve"> </w:t>
</w:r>
<w:r>
<w:rPr>
@ -1421,17 +1429,33 @@
</w:rPr>
<w:t xml:space="preserve"> 年</w:t>
</w:r>
<#-- <w:r>-->
<#-- <w:t>_____</w:t>-->
<#-- </w:r>-->
<w:r>
<w:t>____</w:t>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
<w:sz w:val="24"/>
<w:u w:val="single"/>
</w:rPr>
<w:t xml:space="preserve"> </w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
</w:rPr>
<w:t xml:space="preserve"> 月</w:t>
<w:t xml:space="preserve"> 月</w:t>
</w:r>
<#-- <w:r>-->
<#-- <w:t>_____</w:t>-->
<#-- </w:r>-->
<w:r>
<w:t>___</w:t>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
<w:sz w:val="24"/>
<w:u w:val="single"/>
</w:rPr>
<w:t xml:space="preserve"> </w:t>
</w:r>
<w:r>
<w:rPr>

1287
anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/vinHandoverData.ftl

File diff suppressed because it is too large

2
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempQuery.java

@ -38,4 +38,6 @@ public class AppCrmCustomerTempQuery implements Query {
// @ApiModelProperty("组织机构sid")
// private String orgPath;
private String type;
}

3
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java

@ -473,6 +473,9 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
if (StringUtils.isNotBlank(name)) {
qw.like("cct.name", name);
}
if(StringUtils.isNotBlank(params.getType())){
qw.eq("cct.customerTypeKey",params.getType());
}
}
qw.orderByDesc("cct.id");
IPage<AppCrmCustomerTempVo> iPage = baseMapper.getCustomerTempListByUserSid(page, qw);

15
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/FinCustNameAndPhone.java

@ -0,0 +1,15 @@
package com.yxt.anrui.fin.api.finfundscarriedforwardapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class FinCustNameAndPhone {
@ApiModelProperty("付款人姓名")
private String draweeName;
@ApiModelProperty("付款人联系电话")
private String draweeMobile;
@ApiModelProperty("业务员sid")
private String staffSid;
}

22
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/ZC.java → anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/TzDto.java

@ -1,25 +1,31 @@
package com.yxt.anrui.fin.api.finfundscarriedforwardapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
public class ZC {
@AllArgsConstructor
@NoArgsConstructor
public class TzDto {
@ApiModelProperty("调账类型")
private String zc;
private String tzType;
@ApiModelProperty("业务sud")
private String busSid;
@ApiModelProperty("合同编号")
private String conNo;
@ApiModelProperty("客户sid")
private String custSid;
@ApiModelProperty("客户名称")
private String name;
@ApiModelProperty("客户编码")
private String custNo;
@ApiModelProperty("物料编码")
private String vinNo;
@ApiModelProperty("调出金额")
private String dcje;
private Integer dcje = 0;
@ApiModelProperty("调入金额")
private String drje;
@ApiModelProperty("调出前余额")
private String dcqye;
@ApiModelProperty("调出后余额")
private String dchye;
private Integer drje = 0;
}

25
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finfundscarriedforwardapply/ZR.java

@ -1,25 +0,0 @@
package com.yxt.anrui.fin.api.finfundscarriedforwardapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ZR {
@ApiModelProperty("调账类型")
private String zr;
@ApiModelProperty("合同编号")
private String conNo;
@ApiModelProperty("客户名称")
private String name;
@ApiModelProperty("物料编码")
private String vinNo;
@ApiModelProperty("调出金额")
private String dcje;
@ApiModelProperty("调入金额")
private String drje;
@ApiModelProperty("调出前余额")
private String dcqye;
@ApiModelProperty("调出后余额")
private String dchye;
}

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/ReceiveInvoiceVo.java

@ -14,6 +14,8 @@ import java.util.List;
@Data
public class ReceiveInvoiceVo {
private List<ReceiveSeleteVo> receiveSeleteVoList = new ArrayList<>();
private InvoiceVo invoiceVo;

14
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailed/ReceiveSeleteVo.java

@ -3,6 +3,8 @@ package com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author dimengzhe
* @Date 2023/4/19 14:18
@ -11,6 +13,7 @@ import lombok.Data;
@Data
public class ReceiveSeleteVo {
private String receivablesSid;
@ApiModelProperty("款项名称")
private String receivablesName;
@ -23,4 +26,15 @@ public class ReceiveSeleteVo {
private String notSubscriptionMoney;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("付款时间")
private String subscriptionDate;
@ApiModelProperty("收款开户行")
private String collectionBank;
@ApiModelProperty("收款账户")
private String receivingName;
@ApiModelProperty("付款人")
private String payerName;
@ApiModelProperty("付款时间")
private String collectionDate;
}

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/otherarreceivable/OtherReceivable.java

@ -15,6 +15,8 @@ import java.util.List;
@Data
public class OtherReceivable {
@ApiModelProperty("单据编号")
public String billNo;
@ApiModelProperty("单据类型")
public String billType = "QTYSD01_SYS";
@ApiModelProperty("往来单位类型")

10
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationMapper.xml

@ -201,13 +201,13 @@
<select id="jyddkydjListPage"
resultType="com.yxt.anrui.fin.api.fincollectionconfirmation.FinCollectionConfirmationJYDDKYDJVo">
SELECT
fcc.sid,
fsrd.sid,
fcc.useOrgSid,
fcc.staffDeptName,
fcc.staffUserSid AS staffSid,
fcc.staffName,
fcc.`billNo`,
fcc.`payerName`,
fsrd.`customerName` AS payerName,
bd.`draweeMobile` AS phone,
fcc.collectionDate,
fcc.collectionMoney,
@ -215,9 +215,9 @@
fcc.collectionMoney - COALESCE(SUM(ffc.`thisUseMoney`), 0)
) AS balance
FROM
fin_collection_confirmation fcc
LEFT JOIN fin_selected_receivables_detailed fsrd
ON fcc.`sid` = fsrd.`collSid`
fin_selected_receivables_detailed fsrd
JOIN fin_collection_confirmation fcc
ON fcc.`sid` = fsrd.`collSid` AND fcc.`pushMessgae` = 1
LEFT JOIN anrui_buscenter.`bus_deposit` bd
ON fcc.`busSid` = bd.`billSid`
LEFT JOIN `fin_funds_carried_forward_veh` ffc

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java

@ -2771,7 +2771,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
qw.like("fcc.billNo", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getPayerName())) {
qw.like("fcc.payerName", query.getPayerName());
qw.like("fsrd.customerName", query.getPayerName());
}
if (StringUtils.isNotBlank(query.getPhone())) {
qw.like("bd.draweeMobile", query.getPhone());
@ -2784,8 +2784,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
if (StringUtils.isNotBlank(query.getName())) {
qw.and(wrapper -> wrapper.like("fcc.billNo", query.getName()).or().like("fcc.staffDeptName", query.getName()).or().like("fcc.staffName", query.getName()).or().like("fcc.payerName", query.getName()).or().like("bd.draweeMobile", query.getName()));
}
qw.isNotNull("fcc.busSid");
qw.groupBy("fcc.sid");
qw.groupBy("fsrd.sid");
if (StringUtils.isNotBlank(query.getCollectionSmallMoney()) && StringUtils.isNotBlank(query.getCollectionBigMoney())){
qw.having("balance > 0").having("balance >= {0}", query.getCollectionSmallMoney()).having("balance <= {0}", query.getCollectionBigMoney());
}else {

522
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardapply/FinFundsCarriedForwardApplyService.java

@ -36,7 +36,6 @@ import com.yxt.anrui.base.api.commonappendix.CommonAppendixDto;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
@ -53,12 +52,10 @@ import com.yxt.anrui.fin.api.finfundscarriedforwardveh.FinFundsCarriedForwardVeh
import com.yxt.anrui.fin.api.finfundscarriedforwardveh.FinFundsCarriedForwardVehDto;
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed;
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedVo;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.otherarreceivable.OtherReceivable;
import com.yxt.anrui.fin.biz.fincollectionconfirmation.FinCollectionConfirmationService;
import com.yxt.anrui.fin.biz.finfundscarriedforwardveh.FinFundsCarriedForwardVehService;
import com.yxt.anrui.fin.biz.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedService;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.anrui.fin.biz.kingdee.otherreceivablebill.OtherReceivableBillService;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
@ -360,24 +357,13 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
for (String busSid : busSids) {
FinFundsCarriedForwardVehDetailsVo finFundsCarriedForwardVehDetailsVo = new FinFundsCarriedForwardVehDetailsVo();
finFundsCarriedForwardVehDetailsVo.setBusSid(busSid);
if ("简易订单订金".equals(finFundsCarriedForwardApplyInitQuery.getSource())) {
finCollectionConfirmation = finCollectionConfirmationService.fetchBySid(busSid);
finFundsCarriedForwardVehDetailsVo.setBusBillNo(finCollectionConfirmation.getBillNo());
finFundsCarriedForwardVehDetailsVo.setCustomerName(finCollectionConfirmation.getPayerName());
finFundsCarriedForwardVehDetailsVo.setBalance(finCollectionConfirmation.getBalance().toString());
} else if ("已认款".equals(finFundsCarriedForwardApplyInitQuery.getSource())) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(busSid);
finCollectionConfirmation = finCollectionConfirmationService.fetchBySid(finSelectedReceivablesDetailed.getCollSid());
finFundsCarriedForwardVehDetailsVo.setBusBillNo(finSelectedReceivablesDetailed.getContractNo());
finFundsCarriedForwardVehDetailsVo.setCustomerSid(finSelectedReceivablesDetailed.getCustomerSid());
finFundsCarriedForwardVehDetailsVo.setCustomerName(finSelectedReceivablesDetailed.getCustomerName());
finFundsCarriedForwardVehDetailsVo.setVinNo(finSelectedReceivablesDetailed.getVIN());
if (StringUtils.isBlank(finSelectedReceivablesDetailed.getBalance())) {
finFundsCarriedForwardVehDetailsVo.setBalance(finSelectedReceivablesDetailed.getSubscriptionMoney().toString());
} else {
finFundsCarriedForwardVehDetailsVo.setBalance(finSelectedReceivablesDetailed.getBalance());
}
}
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchYeBySid(busSid);
finCollectionConfirmation = finCollectionConfirmationService.fetchBySid(finSelectedReceivablesDetailed.getCollSid());
finFundsCarriedForwardVehDetailsVo.setBusBillNo(finSelectedReceivablesDetailed.getContractNo());
finFundsCarriedForwardVehDetailsVo.setCustomerSid(finSelectedReceivablesDetailed.getCustomerSid());
finFundsCarriedForwardVehDetailsVo.setCustomerName(finSelectedReceivablesDetailed.getCustomerName());
finFundsCarriedForwardVehDetailsVo.setVinNo(finSelectedReceivablesDetailed.getVIN());
finFundsCarriedForwardVehDetailsVo.setBalance(finSelectedReceivablesDetailed.getBalance());
finFundsCarriedForwardVehDetailsVos.add(finFundsCarriedForwardVehDetailsVo);
}
finFundsCarriedForwardApplyDetailsVo.setSaleDeptSid(finCollectionConfirmation.getStaffDeptSid());
@ -469,7 +455,7 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
finSelectedReceivablesDetailed.setAuditState(3);
}
finSelectedReceivablesDetailed.setAuditDate(DateUtil.formatDate(new Date()));
if(finSelectedReceivablesDetailed.getSubscribedOf() == 1){
if (finSelectedReceivablesDetailed.getSubscribedOf() == 1) {
finSelectedReceivablesDetailed.setSelectSid(yxysFinFundsCarriedForwardYXYSKXVo.getSid());
}
finSelectedReceivablesDetailedService.save(finSelectedReceivablesDetailed);
@ -513,7 +499,7 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
finSelectedReceivablesDetailed.setUseOrgSid(yxysFinFundsCarriedForwardYXYSKXVo.getUseOrgSid());
finSelectedReceivablesDetailed.setSubscribedOf(yxysFinFundsCarriedForwardYXYSKXVo.getSubscribedOf());
finSelectedReceivablesDetailed.setCollSid(dtoSid);
if(finSelectedReceivablesDetailed.getSubscribedOf() == 1){
if (finSelectedReceivablesDetailed.getSubscribedOf() == 1) {
finSelectedReceivablesDetailed.setSelectSid(yxysFinFundsCarriedForwardYXYSKXVo.getSid());
}
finSelectedReceivablesDetailedService.save(finSelectedReceivablesDetailed);
@ -541,10 +527,7 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
ResultBean rb = ResultBean.fireFail();
//用户的组织全路径
FinFundsCarriedForwardApply finFundsCarriedForwardApply = fetchBySid(dto.getSid());
//销售部门信息
SysOrganizationVo sysOrganizationVo1 = sysOrganizationFeign.fetchBySid(finFundsCarriedForwardApply.getSaleDeptSid()).getData();
//分公司信息
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(finFundsCarriedForwardApply.getUseOrgSid()).getData();
//根据结转申请sid查询转出转入的list集合
List<FinFundsCarriedForwardVehDto> finFundsCarriedForwardVehDetailsVos = dto.getFinFundsCarriedForwardVehDetailsVos();
List<AppFinFundsCarriedForwardYXYSKXDto> yxysFinFundsCarriedForwardYXYSKXVos = dto.getYxysFinFundsCarriedForwardYXYSKXVos();
if (finFundsCarriedForwardVehDetailsVos.size() > 1 && yxysFinFundsCarriedForwardYXYSKXVos.size() > 1) {
@ -591,100 +574,9 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
dto.setIsOneSale(true);
String sid = saveOrUpdateAll(dto).getData();
finFundsCarriedForwardApply = fetchBySid(sid);
FinFundsCarriedForwardApplyDetailsVo data = fetchDetailsVoBySid(sid).getData();
List<FinFundsCarriedForwardVehDetailsVo> finFundsCarriedForwardVehDetailsVos1 = data.getFinFundsCarriedForwardVehDetailsVos();
List<AppFinFundsCarriedForwardYXYSKXVo> yxysFinFundsCarriedForwardYXYSKXVos1 = data.getYxysFinFundsCarriedForwardYXYSKXVos();
String pdfPath = createPdf(sid, finFundsCarriedForwardApply.getCreateByName()).getData();
baseMapper.updatePathBySid(pdfPath, sid);
List<Map<String,String>> jzCustNos = new ArrayList<>();
List<Map<String,String>> ysCustNos = new ArrayList<>();
for (FinFundsCarriedForwardVehDetailsVo finFundsCarriedForwardVehDetailsVo2 : finFundsCarriedForwardVehDetailsVos1) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(finFundsCarriedForwardVehDetailsVo2.getBusSid());
String custNo = "";
if ("1".equals(finSelectedReceivablesDetailed.getPayTypeKey())) {//全款
Map<String, String> map = new HashMap<>();
custNo = finSelectedReceivablesDetailed.getContractNo();
map.put("type","全款");
map.put("custNo",custNo);
jzCustNos.add(map);
} else {//贷款
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(finSelectedReceivablesDetailed.getVIN(), finSelectedReceivablesDetailed.getUseOrgSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.selectByNoAndVinSid(finSelectedReceivablesDetailed.getContractNo(), baseVehicle.getSid()).getData();
custNo = busSalesOrderVehicle.getTemporaryNo();
Map<String, String> map = new HashMap<>();
map.put("type","贷款");
map.put("custNo",custNo);
jzCustNos.add(map);
}
}
jzCustNos = jzCustNos.stream().distinct().collect(Collectors.toList());
for (Map jzCustNo : jzCustNos) {
String custNo = (String) jzCustNo.get("custNo");
OtherReceivable otherReceivable = new OtherReceivable();
otherReceivable.setCommUnit(custNo);
otherReceivable.setCollectionOrg(sysOrganizationVo2.getOrgCode());
otherReceivable.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoList = new ArrayList<>();
List<String> stringList;
if (jzCustNo.get("type").equals("全款")){
stringList = finFundsCarriedForwardVehService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}else {
custNo = custNo.substring(0, custNo.length() - 2);
stringList = finFundsCarriedForwardVehService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}
for (String s : stringList) {
OtherReceivable.CollectionDetailDto collectionDetailDto = new OtherReceivable.CollectionDetailDto();
collectionDetailDto.setDearDept(sysOrganizationVo1.getOrgCode());
collectionDetailDto.setExTaxMoney(s);
collectionDetailDtoList.add(collectionDetailDto);
}
otherReceivable.setCollectionDetails(collectionDetailDtoList);
otherReceivableBillService.otherReceivableBillService(otherReceivable);
}
for (AppFinFundsCarriedForwardYXYSKXVo yxysFinFundsCarriedForwardYXYSKXVo2 : yxysFinFundsCarriedForwardYXYSKXVos1) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(yxysFinFundsCarriedForwardYXYSKXVo2.getSid());
String custNo = "";
if ("1".equals(finSelectedReceivablesDetailed.getPayTypeKey())) {//全款
custNo = finSelectedReceivablesDetailed.getContractNo();
Map<String, String> map = new HashMap<>();
map.put("type","全款");
map.put("custNo",custNo);
ysCustNos.add(map);
} else {//贷款
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(finSelectedReceivablesDetailed.getVIN(), finSelectedReceivablesDetailed.getUseOrgSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.selectByNoAndVinSid(finSelectedReceivablesDetailed.getContractNo(), baseVehicle.getSid()).getData();
custNo = busSalesOrderVehicle.getTemporaryNo();
Map<String, String> map = new HashMap<>();
map.put("type","贷款");
map.put("custNo",custNo);
ysCustNos.add(map);
}
}
ysCustNos = ysCustNos.stream().distinct().collect(Collectors.toList());
for (Map ysCustNo : ysCustNos) {
OtherReceivable otherReceivable = new OtherReceivable();
String custNo = (String)ysCustNo.get("custNo");
otherReceivable.setCommUnit(custNo);
otherReceivable.setCollectionOrg(sysOrganizationVo2.getOrgCode());
otherReceivable.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoList = new ArrayList<>();
List<String> stringList;
if (ysCustNo.get("type").equals("全款")){
stringList = finSelectedReceivablesDetailedService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}else {
custNo = custNo.substring(0, custNo.length() - 2);
stringList = finSelectedReceivablesDetailedService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}
for (String s : stringList) {
OtherReceivable.CollectionDetailDto collectionDetailDto = new OtherReceivable.CollectionDetailDto();
collectionDetailDto.setDearDept(sysOrganizationVo1.getOrgCode());
collectionDetailDto.setExTaxMoney("-" + s);
collectionDetailDtoList.add(collectionDetailDto);
}
otherReceivable.setCollectionDetails(collectionDetailDtoList);
otherReceivableBillService.otherReceivableBillService(otherReceivable);
}
//baseMapper.updateNodeStateBySid("已办结",finFundsCarriedForwardApply.getSid());
tsqtysd(sid);
return rb.success();
}
}
@ -767,6 +659,197 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
return null;
}
public void tsqtysd(String applySid) {
//1.根据结转申请sid查询转出转入的list集合 listi(转入)listo(转出)
FinFundsCarriedForwardApplyDetailsVo data = fetchDetailsVoBySid(applySid).getData();
//转出
List<FinFundsCarriedForwardVehDetailsVo> finFundsCarriedForwardVehDetailsVos = data.getFinFundsCarriedForwardVehDetailsVos();
//转入
List<AppFinFundsCarriedForwardYXYSKXVo> yxysFinFundsCarriedForwardYXYSKXVos = data.getYxysFinFundsCarriedForwardYXYSKXVos();
//分公司信息
SysOrganizationVo sysOrganizationVo1 = sysOrganizationFeign.fetchBySid(data.getUseOrgSid()).getData();
//销售部门信息
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(data.getSaleDeptSid()).getData();
List<TzDto> zcList = new ArrayList<>();
List<TzDto> zrList = new ArrayList<>();
//构建对象
for (FinFundsCarriedForwardVehDetailsVo finFundsCarriedForwardVehDetailsVo : finFundsCarriedForwardVehDetailsVos) {
TzDto zc = new TzDto();
zc.setBusSid(finFundsCarriedForwardVehDetailsVo.getBusSid());
zc.setTzType("转出");
zc.setCustSid(finFundsCarriedForwardVehDetailsVo.getCustomerSid());
zc.setConNo(finFundsCarriedForwardVehDetailsVo.getBusBillNo());
zc.setName(finFundsCarriedForwardVehDetailsVo.getCustomerName());
zc.setVinNo(finFundsCarriedForwardVehDetailsVo.getVinNo());
zc.setDcje(Integer.valueOf(finFundsCarriedForwardVehDetailsVo.getThisUseMoney()));
zcList.add(zc);
}
for (AppFinFundsCarriedForwardYXYSKXVo yxysFinFundsCarriedForwardYXYSKXVo : yxysFinFundsCarriedForwardYXYSKXVos) {
TzDto zr = new TzDto();
zr.setBusSid(yxysFinFundsCarriedForwardYXYSKXVo.getSid());
zr.setTzType("转入");
zr.setCustSid(yxysFinFundsCarriedForwardYXYSKXVo.getCustomerSid());
zr.setConNo(yxysFinFundsCarriedForwardYXYSKXVo.getContractId());
zr.setName(yxysFinFundsCarriedForwardYXYSKXVo.getName());
zr.setVinNo(yxysFinFundsCarriedForwardYXYSKXVo.getVin());
zr.setDrje(Integer.parseInt(yxysFinFundsCarriedForwardYXYSKXVo.getConfirmMoney()));
zrList.add(zr);
}
//2.设置listi和listo中财务系统客户编码值
if ("简易订单订金".equals(data.getSource())) {
for (TzDto zc : zcList) {
//从已认款中获取客户编码
if (StringUtils.isNotBlank(zc.getCustSid())) {
CrmCustomerTempVo crmCustomerTempVo = crmCustomerTempFeign.fetchSid(zc.getCustSid()).getData();
zc.setCustNo(crmCustomerTempVo.getCustomerNo());
} else {
List<FinCustNameAndPhone> finCustNameAndPhoneList = finFundsCarriedForwardVehService.fetchNameAndPhoneByBusSid(zc.getBusSid());
for (FinCustNameAndPhone finCustNameAndPhone : finCustNameAndPhoneList) {
String custNo = getPrefix(finCustNameAndPhone.getStaffSid(), finCustNameAndPhone.getDraweeName(), finCustNameAndPhone.getDraweeMobile());
zc.setCustNo(custNo);
}
}
}
} else {
for (TzDto zc : zcList) {
zc.setCustNo(getCustNoCW(zc.getBusSid()));
}
}
for (TzDto zr : zrList) {
zr.setCustNo(getCustNoCW(zr.getBusSid()));
}
List<TzDto> listOne;
List<TzDto> listMany;
if (zcList.size() > 1) {
listOne = zrList;
listMany = zcList;
} else {
listOne = zcList;
listMany = zrList;
}
//3.循环判断多条中是否存在相同的财务系统客户编码,如果有相同的则合并为一条,结转金额相加
List<TzDto> manyRemoveList = manyHB(listMany);
Boolean aBoolean = subMoney(listOne, manyRemoveList);
if (!aBoolean) {
return;
}
//5.判断一条的余额是否大于0,大于0推送,否则不推送
if (listOne.get(0).getDrje() > 0 || listOne.get(0).getDcje() > 0) {
//一条的推送
OtherReceivable otherReceivableOne = new OtherReceivable();
otherReceivableOne.setBillNo(data.getBillNo());
otherReceivableOne.setCommUnit(listOne.get(0).getCustNo());
otherReceivableOne.setCollectionOrg(sysOrganizationVo1.getOrgCode());
otherReceivableOne.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoListOne = new ArrayList<>();
OtherReceivable.CollectionDetailDto collectionDetailDtoOne = new OtherReceivable.CollectionDetailDto();
collectionDetailDtoOne.setDearDept(sysOrganizationVo2.getOrgCode());
if (listOne.get(0).getTzType().equals("转入")) {
collectionDetailDtoOne.setExTaxMoney("-" + listOne.get(0).getDrje());
} else {
collectionDetailDtoOne.setExTaxMoney(listOne.get(0).getDcje().toString());
}
collectionDetailDtoListOne.add(collectionDetailDtoOne);
otherReceivableOne.setCollectionDetails(collectionDetailDtoListOne);
otherReceivableBillService.otherReceivableBillService(otherReceivableOne);
//多条的推送
OtherReceivable otherReceivableMany = new OtherReceivable();
int i = 1;
for (TzDto tzDto : manyRemoveList) {
String temporaryNum = String.format("%02d", i);
otherReceivableMany.setBillNo(data.getBillNo() + "-" + temporaryNum);
otherReceivableMany.setCommUnit(tzDto.getCustNo());
otherReceivableMany.setCollectionOrg(sysOrganizationVo1.getOrgCode());
otherReceivableMany.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoListMany = new ArrayList<>();
OtherReceivable.CollectionDetailDto collectionDetailDtoMany = new OtherReceivable.CollectionDetailDto();
collectionDetailDtoMany.setDearDept(sysOrganizationVo2.getOrgCode());
if (tzDto.getTzType().equals("转入")) {
collectionDetailDtoMany.setExTaxMoney("-" + tzDto.getDrje());
} else {
collectionDetailDtoMany.setExTaxMoney(tzDto.getDcje().toString());
}
collectionDetailDtoListMany.add(collectionDetailDtoMany);
otherReceivableMany.setCollectionDetails(collectionDetailDtoListMany);
otherReceivableBillService.otherReceivableBillService(otherReceivableMany);
i = i + 1;
}
}
}
/*
* 财务中的客户编码
* */
private String getCustNoCW(String busSid) {
String custNo = "";
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(busSid);
if ("1".equals(finSelectedReceivablesDetailed.getPayTypeKey())) {//全款
custNo = finSelectedReceivablesDetailed.getContractNo();
} else {//贷款
if (finSelectedReceivablesDetailed.getVIN().length() > 3) {
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(finSelectedReceivablesDetailed.getVIN(), finSelectedReceivablesDetailed.getUseOrgSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.selectByNoAndVinSid(finSelectedReceivablesDetailed.getContractNo(), baseVehicle.getSid()).getData();
custNo = busSalesOrderVehicle.getTemporaryNo();
} else {
//没有车架号,拼接合同号和临时编号
custNo = finSelectedReceivablesDetailed.getContractNo() + finSelectedReceivablesDetailed.getVIN();
}
}
return custNo;
}
private List<TzDto> manyHB(List<TzDto> list) {
//转出为多条,转入为一条
List<TzDto> manyRemoveList = new ArrayList<>();
if (list.get(0).getTzType().equals("转出")){
list.parallelStream().collect(Collectors.groupingBy(tzDto -> tzDto.getCustNo(), Collectors.toList())).forEach((id, transfer) -> {
transfer.stream().reduce((a, b) -> new TzDto(
a.getTzType(),
a.getBusSid(),
a.getConNo(),
a.getCustSid(),
a.getName(),
a.getCustNo(),
a.getVinNo(),
a.getDcje() + b.getDcje(),
a.getDrje())).ifPresent(manyRemoveList::add);
});
}else {
list.parallelStream().collect(Collectors.groupingBy(tzDto -> tzDto.getCustNo(), Collectors.toList())).forEach((id, transfer) -> {
transfer.stream().reduce((a, b) -> new TzDto(
a.getTzType(),
a.getBusSid(),
a.getConNo(),
a.getCustSid(),
a.getName(),
a.getCustNo(),
a.getVinNo(),
a.getDcje(),
a.getDrje() + b.getDrje())).ifPresent(manyRemoveList::add);
});
}
return manyRemoveList;
}
private Boolean subMoney(List<TzDto> listOne, List<TzDto> removeList) {
//4.对比一条的和多条的是否存在相同的客户编码,相同的结转金额相减,多条中相同客户编码的记录去除
String custNo = listOne.get(0).getCustNo();
for (TzDto tzDto : removeList) {
if (tzDto.getCustNo().equals(custNo)) {
if (tzDto.getTzType().equals("转入")) {
listOne.get(0).setDcje(listOne.get(0).getDcje() - tzDto.getDrje());
} else {
listOne.get(0).setDrje(listOne.get(0).getDrje() - tzDto.getDcje());
}
removeList.remove(tzDto);
}
if (removeList.size() == 0) {
return false;
}
}
return true;
}
/**
* 更新流程相关的状态
*
@ -1020,170 +1103,7 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
for (AppFinFundsCarriedForwardYXYSKXVo appFinFundsCarriedForwardYXYSKXVo : yxysFinFundsCarriedForwardYXYSKXVos) {
finSelectedReceivablesDetailedService.updateAuditStateBySid(3, appFinFundsCarriedForwardYXYSKXVo.getSid());
}
List<FinFundsCarriedForwardVehDetailsVo> finFundsCarriedForwardVehDetailsVos = data.getFinFundsCarriedForwardVehDetailsVos();
List<Map<String,String>> jyddNos = new ArrayList<>();
List<Map<String,String>> jzCustNos = new ArrayList<>();
List<Map<String,String>> ysCustNos = new ArrayList<>();
if ("简易订单订金".equals(finFundsCarriedForwardApply.getSource())) {
List<FinFundsCarriedForwardVehDetailsVo> finFundsCarriedForwardVehDetailsVos1 = finFundsCarriedForwardVehService.fetchByMainSidAndGroupCustPhone(finFundsCarriedForwardApply.getSid());
for (FinFundsCarriedForwardVehDetailsVo finFundsCarriedForwardVehDetailsVo : finFundsCarriedForwardVehDetailsVos1) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(finFundsCarriedForwardVehDetailsVo.getBusSid());
CrmCustomerTempVo crmCustomerTempVo = crmCustomerTempFeign.fetchSid(finSelectedReceivablesDetailed.getCustomerSid()).getData();
Map<String, String> map = new HashMap<>();
map.put("custSid",crmCustomerTempVo.getSid());
map.put("custNo",crmCustomerTempVo.getCustomerNo());
jyddNos.add(map);
}
jyddNos = jyddNos.stream().distinct().collect(Collectors.toList());
for (Map<String, String> jyddNo : jyddNos) {
OtherReceivable otherReceivable = new OtherReceivable();
String custNo = jyddNo.get("custNo");
otherReceivable.setCommUnit(custNo);
otherReceivable.setCollectionOrg(sysOrganizationVo2.getOrgCode());
otherReceivable.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoList = new ArrayList<>();
String custSid = jyddNo.get("custSid");
List<String> stringList = finFundsCarriedForwardVehService.fetchJzMoneyByCustSidAndMainSid(custSid, finFundsCarriedForwardApply.getSid());
for (String s : stringList) {
OtherReceivable.CollectionDetailDto collectionDetailDto = new OtherReceivable.CollectionDetailDto();
collectionDetailDto.setDearDept(sysOrganizationVo1.getOrgCode());
collectionDetailDto.setExTaxMoney(s);
collectionDetailDtoList.add(collectionDetailDto);
}
otherReceivable.setCollectionDetails(collectionDetailDtoList);
otherReceivableBillService.otherReceivableBillService(otherReceivable);
}
for (AppFinFundsCarriedForwardYXYSKXVo yxysFinFundsCarriedForwardYXYSKXVo2 : yxysFinFundsCarriedForwardYXYSKXVos) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(yxysFinFundsCarriedForwardYXYSKXVo2.getSid());
String custNo = "";
if ("1".equals(finSelectedReceivablesDetailed.getPayTypeKey())) {//全款
custNo = finSelectedReceivablesDetailed.getContractNo();
Map<String, String> map = new HashMap<>();
map.put("type","全款");
map.put("custNo",custNo);
ysCustNos.add(map);
} else {//贷款
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(finSelectedReceivablesDetailed.getVIN(), finSelectedReceivablesDetailed.getUseOrgSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.selectByNoAndVinSid(finSelectedReceivablesDetailed.getContractNo(), baseVehicle.getSid()).getData();
custNo = busSalesOrderVehicle.getTemporaryNo();
Map<String, String> map = new HashMap<>();
map.put("type","贷款");
map.put("custNo",custNo);
ysCustNos.add(map);
}
}
ysCustNos = ysCustNos.stream().distinct().collect(Collectors.toList());
for (Map ysCustNo : ysCustNos) {
OtherReceivable otherReceivable = new OtherReceivable();
String custNo = (String)ysCustNo.get("custNo");
otherReceivable.setCommUnit(custNo);
otherReceivable.setCollectionOrg(sysOrganizationVo2.getOrgCode());
otherReceivable.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoList = new ArrayList<>();
List<String> stringList;
if (ysCustNo.get("type").equals("全款")){
stringList = finSelectedReceivablesDetailedService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}else {
custNo = custNo.substring(0, custNo.length() - 2);
stringList = finSelectedReceivablesDetailedService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}
for (String s : stringList) {
OtherReceivable.CollectionDetailDto collectionDetailDto = new OtherReceivable.CollectionDetailDto();
collectionDetailDto.setDearDept(sysOrganizationVo1.getOrgCode());
collectionDetailDto.setExTaxMoney("-" + s);
collectionDetailDtoList.add(collectionDetailDto);
}
otherReceivable.setCollectionDetails(collectionDetailDtoList);
otherReceivableBillService.otherReceivableBillService(otherReceivable);
}
} else if ("已认款".equals(finFundsCarriedForwardApply.getSource())) {
for (FinFundsCarriedForwardVehDetailsVo finFundsCarriedForwardVehDetailsVo2 : finFundsCarriedForwardVehDetailsVos) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(finFundsCarriedForwardVehDetailsVo2.getBusSid());
String custNo = "";
if ("1".equals(finSelectedReceivablesDetailed.getPayTypeKey())) {//全款
Map<String, String> map = new HashMap<>();
custNo = finSelectedReceivablesDetailed.getContractNo();
map.put("type","全款");
map.put("custNo",custNo);
jzCustNos.add(map);
} else {//贷款
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(finSelectedReceivablesDetailed.getVIN(), finSelectedReceivablesDetailed.getUseOrgSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.selectByNoAndVinSid(finSelectedReceivablesDetailed.getContractNo(), baseVehicle.getSid()).getData();
custNo = busSalesOrderVehicle.getTemporaryNo();
Map<String, String> map = new HashMap<>();
map.put("type","贷款");
map.put("custNo",custNo);
jzCustNos.add(map);
}
}
jzCustNos = jzCustNos.stream().distinct().collect(Collectors.toList());
for (Map jzCustNo : jzCustNos) {
String custNo = (String) jzCustNo.get("custNo");
OtherReceivable otherReceivable = new OtherReceivable();
otherReceivable.setCommUnit(custNo);
otherReceivable.setCollectionOrg(sysOrganizationVo2.getOrgCode());
otherReceivable.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoList = new ArrayList<>();
List<String> stringList;
if (jzCustNo.get("type").equals("全款")){
stringList = finFundsCarriedForwardVehService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}else {
custNo = custNo.substring(0, custNo.length() - 2);
stringList = finFundsCarriedForwardVehService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}
for (String s : stringList) {
OtherReceivable.CollectionDetailDto collectionDetailDto = new OtherReceivable.CollectionDetailDto();
collectionDetailDto.setDearDept(sysOrganizationVo1.getOrgCode());
collectionDetailDto.setExTaxMoney(s);
collectionDetailDtoList.add(collectionDetailDto);
}
otherReceivable.setCollectionDetails(collectionDetailDtoList);
otherReceivableBillService.otherReceivableBillService(otherReceivable);
}
for (AppFinFundsCarriedForwardYXYSKXVo yxysFinFundsCarriedForwardYXYSKXVo2 : yxysFinFundsCarriedForwardYXYSKXVos) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(yxysFinFundsCarriedForwardYXYSKXVo2.getSid());
String custNo = "";
if ("1".equals(finSelectedReceivablesDetailed.getPayTypeKey())) {//全款
custNo = finSelectedReceivablesDetailed.getContractNo();
Map<String, String> map = new HashMap<>();
map.put("type","全款");
map.put("custNo",custNo);
ysCustNos.add(map);
} else {//贷款
BaseVehicle baseVehicle = baseVehicleFeign.selectByVinNoAndOrgSid(finSelectedReceivablesDetailed.getVIN(), finSelectedReceivablesDetailed.getUseOrgSid()).getData();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.selectByNoAndVinSid(finSelectedReceivablesDetailed.getContractNo(), baseVehicle.getSid()).getData();
custNo = busSalesOrderVehicle.getTemporaryNo();
Map<String, String> map = new HashMap<>();
map.put("type","贷款");
map.put("custNo",custNo);
ysCustNos.add(map);
}
}
ysCustNos = ysCustNos.stream().distinct().collect(Collectors.toList());
for (Map ysCustNo : ysCustNos) {
OtherReceivable otherReceivable = new OtherReceivable();
String custNo = (String)ysCustNo.get("custNo");
otherReceivable.setCommUnit(custNo);
otherReceivable.setCollectionOrg(sysOrganizationVo2.getOrgCode());
otherReceivable.setBussDate(DateUtil.formatDate(new Date()));
List<OtherReceivable.CollectionDetailDto> collectionDetailDtoList = new ArrayList<>();
List<String> stringList;
if (ysCustNo.get("type").equals("全款")){
stringList = finSelectedReceivablesDetailedService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}else {
custNo = custNo.substring(0, custNo.length() - 2);
stringList = finSelectedReceivablesDetailedService.fetchJzMoneyByContractNoAndMainSid(custNo, finFundsCarriedForwardApply.getSid());
}
for (String s : stringList) {
OtherReceivable.CollectionDetailDto collectionDetailDto = new OtherReceivable.CollectionDetailDto();
collectionDetailDto.setDearDept(sysOrganizationVo1.getOrgCode());
collectionDetailDto.setExTaxMoney("-" + s);
collectionDetailDtoList.add(collectionDetailDto);
}
otherReceivable.setCollectionDetails(collectionDetailDtoList);
otherReceivableBillService.otherReceivableBillService(otherReceivable);
}
}
tsqtysd(businessSid);
} else {
//极光推送
finFundsCarriedForwardApply = fetchBySid(businessSid);
@ -1339,31 +1259,27 @@ public class FinFundsCarriedForwardApplyService extends MybatisBaseService<FinFu
}
}
}
List<ZC> zcList = new ArrayList<>();
List<ZR> zrList = new ArrayList<>();
List<TzDto> tzList = new ArrayList<>();
for (FinFundsCarriedForwardVehDetailsVo finFundsCarriedForwardVehDetailsVo : finFundsCarriedForwardVehDetailsVos) {
ZC zc = new ZC();
zc.setZc("转出");
zc.setConNo(finFundsCarriedForwardVehDetailsVo.getBusBillNo());
zc.setName(finFundsCarriedForwardVehDetailsVo.getCustomerName());
zc.setVinNo(finFundsCarriedForwardVehDetailsVo.getVinNo());
zc.setDcje(finFundsCarriedForwardVehDetailsVo.getThisUseMoney());
zc.setDcqye(finFundsCarriedForwardVehDetailsVo.getBalance());
zc.setDchye(new BigDecimal(finFundsCarriedForwardVehDetailsVo.getBalance()).subtract(new BigDecimal(finFundsCarriedForwardVehDetailsVo.getThisUseMoney())).toString());
zcList.add(zc);
TzDto tzDto = new TzDto();
tzDto.setTzType("转出");
tzDto.setConNo(finFundsCarriedForwardVehDetailsVo.getBusBillNo());
tzDto.setName(finFundsCarriedForwardVehDetailsVo.getCustomerName());
tzDto.setVinNo(finFundsCarriedForwardVehDetailsVo.getVinNo());
tzDto.setDcje(Integer.parseInt(finFundsCarriedForwardVehDetailsVo.getThisUseMoney()));
tzList.add(tzDto);
}
for (AppFinFundsCarriedForwardYXYSKXVo yxysFinFundsCarriedForwardYXYSKXVo : yxysFinFundsCarriedForwardYXYSKXVos) {
ZR zr = new ZR();
zr.setZr("转入");
zr.setConNo(yxysFinFundsCarriedForwardYXYSKXVo.getContractId());
zr.setName(yxysFinFundsCarriedForwardYXYSKXVo.getName());
zr.setVinNo(yxysFinFundsCarriedForwardYXYSKXVo.getVin());
zr.setDrje(yxysFinFundsCarriedForwardYXYSKXVo.getConfirmMoney().toString());
zrList.add(zr);
TzDto tzDto = new TzDto();
tzDto.setTzType("转入");
tzDto.setConNo(yxysFinFundsCarriedForwardYXYSKXVo.getContractId());
tzDto.setName(yxysFinFundsCarriedForwardYXYSKXVo.getName());
tzDto.setVinNo(yxysFinFundsCarriedForwardYXYSKXVo.getVin());
tzDto.setDrje(Integer.parseInt(yxysFinFundsCarriedForwardYXYSKXVo.getConfirmMoney()));
tzList.add(tzDto);
}
dataMap.put("saleDate", DateUtil.formatDate(new Date()));
dataMap.put("zcList", zcList);
dataMap.put("zrList", zrList);
dataMap.put("tzList", tzList);
dataMap.put("makeName", data.getCreateByName() + data.getCreateByDate());
//获取模板
//模板路径

7
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardveh/FinFundsCarriedForwardVehMapper.java

@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.fin.api.finfundscarriedforwardapply.FinCustNameAndPhone;
import com.yxt.anrui.fin.api.finfundscarriedforwardveh.FinFundsCarriedForwardVehDetailsVo;
import org.apache.ibatis.annotations.*;
import com.yxt.anrui.fin.api.finfundscarriedforwardveh.FinFundsCarriedForwardVeh;
@ -77,9 +78,5 @@ public interface FinFundsCarriedForwardVehMapper extends BaseMapper<FinFundsCarr
String selectByBusSid(List<String> sidsList);
List<FinFundsCarriedForwardVehDetailsVo> fetchByMainSidAndGroupCustPhone(String sid);
List<String> fetchJzMoneyByContractNoAndMainSid(@Param("jzCustNo") String jzCustNo,@Param("sid") String sid);
List<String> fetchJzMoneyByCustSidAndMainSid(@Param("custSid") String custSid,@Param("sid") String sid);
List<FinCustNameAndPhone> fetchNameAndPhoneByBusSid(String busSid);
}

32
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardveh/FinFundsCarriedForwardVehMapper.xml

@ -45,29 +45,21 @@
</foreach>
</select>
<select id="fetchByMainSidAndGroupCustPhone"
resultType="com.yxt.anrui.fin.api.finfundscarriedforwardveh.FinFundsCarriedForwardVehDetailsVo">
SELECT ffv.*, bd.draweeMobile
<select id="fetchNameAndPhoneByBusSid"
resultType="com.yxt.anrui.fin.api.finfundscarriedforwardapply.FinCustNameAndPhone">
SELECT bd.`draweeName`,
bd.draweeMobile,
ffa.`staffSid`
FROM fin_funds_carried_forward_veh ffv
LEFT JOIN fin_funds_carried_forward_apply ffa
ON ffv.`mainSid` = ffa.`sid`
LEFT JOIN fin_selected_receivables_detailed fsrd
ON ffv.`busSid` = fsrd.`sid`
LEFT JOIN fin_collection_confirmation fcc
ON ffv.`busSid` = fcc.`sid`
ON fsrd.`collSid` = fcc.`sid`
AND fcc.`pushMessgae` = 1
LEFT JOIN anrui_buscenter.`bus_deposit` bd
ON fcc.`busSid` = bd.`billSid`
WHERE ffv.`mainSid` = #{sid}
GROUP BY bd.`draweeMobile`
</select>
<select id="fetchJzMoneyByContractNoAndMainSid" resultType="java.lang.String">
SELECT ffc.`thisUseMoney` AS jzMoney
FROM fin_funds_carried_forward_veh ffc
WHERE ffc.busBillNo = #{jzCustNo}
AND ffc.mainSid = #{sid}
</select>
<select id="fetchJzMoneyByCustSidAndMainSid" resultType="java.lang.String">
SELECT ffc.`thisUseMoney` AS jzMoney
FROM fin_funds_carried_forward_veh ffc
WHERE ffc.customerSid = #{custSid}
AND ffc.mainSid = #{sid}
WHERE ffv.`busSid` = #{busSid}
</select>
</mapper>

13
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finfundscarriedforwardveh/FinFundsCarriedForwardVehService.java

@ -43,6 +43,7 @@ import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.buscenter.api.bussalesordersubmit.BusSalesOrderSubmit;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.fin.api.finfundscarriedforwardapply.FinCustNameAndPhone;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@ -162,15 +163,7 @@ public class FinFundsCarriedForwardVehService extends MybatisBaseService<FinFund
return baseMapper.selectByBusSid(sidsList);
}
public List<FinFundsCarriedForwardVehDetailsVo> fetchByMainSidAndGroupCustPhone(String sid) {
return baseMapper.fetchByMainSidAndGroupCustPhone(sid);
}
public List<String> fetchJzMoneyByContractNoAndMainSid(String jzCustNo, String sid) {
return baseMapper.fetchJzMoneyByContractNoAndMainSid(jzCustNo,sid);
}
public List<String> fetchJzMoneyByCustSidAndMainSid(String custSid, String sid) {
return baseMapper.fetchJzMoneyByCustSidAndMainSid(custSid,sid);
public List<FinCustNameAndPhone> fetchNameAndPhoneByBusSid(String busSid) {
return baseMapper.fetchNameAndPhoneByBusSid(busSid);
}
}

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java

@ -143,7 +143,7 @@ public interface FinSelectedReceivablesDetailedMapper extends BaseMapper<FinSele
@Select("SELECT SUM(subscriptionMoney) AS seYs FROM fin_selected_receivables_detailed WHERE receivablesSid = #{ysSid} and auditState = 3")
String fetchSumSeYsByReceivablesSid(String ysSid);
int updateAuditStateBySid(@Param("auditState") int i, @Param("collSid") String sid);
int updateAuditStateBySid(@Param("auditState") int i, @Param("sid") String sid);
FinSelectedReceivablesDetailed fetchByReceivablesSidLimt(String ysSid);
@ -161,4 +161,6 @@ public interface FinSelectedReceivablesDetailedMapper extends BaseMapper<FinSele
String selectBalanceByReceivedSid(String receivablesSid);
IPage<FinSelectReceivablesDetailedVo> selectPageLists(IPage<FinSelectedReceivablesPaymentDetailsQuery> page, @Param(Constants.WRAPPER) QueryWrapper<AppFinUncollectedReceivablesDetailedVo> qw, @Param("name") String name);
FinSelectedReceivablesDetailed fetchYeBySid(String busSid);
}

19
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml

@ -294,7 +294,7 @@
<update id="updateAuditStateBySid">
update fin_selected_receivables_detailed
set auditState = #{auditState}
where collSid = #{collSid}
where sid = #{sid}
</update>
<select id="fetchByReceivablesSidLimt"
@ -487,4 +487,21 @@
WHERE fsr.`contractNo` = #{ysCustNo}
AND fsr.`collSid` = #{sid}
</select>
<select id="fetchYeBySid"
resultType="com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed">
SELECT fsrd.contractNo,
fsrd.`customerSid`,
fsrd.`customerName`,
fsrd.`VIN`,
fsrd.collSid,
(
fsrd.`subscriptionMoney` - COALESCE(SUM(ffc.`thisUseMoney`), 0)
) AS balance
FROM fin_selected_receivables_detailed fsrd
LEFT JOIN `fin_funds_carried_forward_veh` ffc
ON ffc.`busSid` = fsrd.`sid`
WHERE fsrd.`sid` = #{busSid}
GROUP BY fsrd.sid
</select>
</mapper>

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java

@ -622,4 +622,8 @@ public class FinSelectedReceivablesDetailedService extends MybatisBaseService<Fi
public List<String> fetchJzMoneyByContractNoAndMainSid(String ysCustNo, String sid) {
return baseMapper.fetchJzMoneyByContractNoAndMainSid(ysCustNo,sid);
}
public FinSelectedReceivablesDetailed fetchYeBySid(String busSid) {
return baseMapper.fetchYeBySid(busSid);
}
}

29
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedMapper.xml

@ -45,18 +45,18 @@
<select id="selectListAllVo"
resultType="com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.DetailsOfReceivablesAndUncollectedItemsVo">
<!-- SELECT *
FROM fin_uncollected_receivables_detailed
<where>
${ew.sqlSegment}
and length(busVinSid) > 0
</where>
order by id asc-->
<!-- SELECT *
FROM fin_uncollected_receivables_detailed
<where>
${ew.sqlSegment}
and length(busVinSid) > 0
</where>
order by id asc-->
SELECT distinct furd.sid,
furd.contractNo AS contractNo,
furd.receivablesName AS receivablesName,
furd.customerPhone AS customerPhone,
furd.customerName AS `customerName`,
furd.contractNo AS contractNo,
furd.receivablesName AS receivablesName,
furd.customerPhone AS customerPhone,
furd.customerName AS `customerName`,
furd.customerSid,
furd.useOrgSid,
cast((furd.`reveivableMoney` - COALESCE(df.dbalance, 0)) AS DECIMAL (10, 2) ) AS currentReceivableMoney,
@ -64,12 +64,12 @@
furd.contractSid,
if(bv.linkNo is null or LENGTH(trim(bv.linkNo)) &lt; 1,
if(furd.payTypeKey = 2, RIGHT(bv.temporaryNo, 2), bv.temporaryNo),
RIGHT(bv.linkNo, 8)) as VIN,
RIGHT(bv.linkNo, 8)) as VIN,
furd.busVinSid,
furd.payType,
furd.payTypeKey,
0 as subscribedOf,
furd.sid as receivablesSid
0 as subscribedOf,
furd.sid as receivablesSid
FROM fin_uncollected_receivables_detailed furd
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = furd.busVinSid
LEFT JOIN (
@ -161,6 +161,7 @@
<select id="receivedSelect" resultType="com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.ReceiveSeleteVo">
SELECT furd.receivablesName,
furd.reveivableMoney,
furd.sid as receivablesSid,
(
SELECT sum(subscriptionMoney)
FROM fin_selected_receivables_detailed

14
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillCastToKingDeeBillFields.java

@ -36,21 +36,21 @@ public class OtherReceivableBillCastToKingDeeBillFields {
fEntityModel_ =KingDeeUtils.replaceTemplateParams(fEntityModel_, map_fEntityModel_);
JSONObject jsonFEntityModel_= JSONObject.parseObject(fEntityModel_,Feature.OrderedField);
List<JSONObject> list_fEntityDetail_=new ArrayList<>();
List<JSONObject> list_fEntity_=new ArrayList<>();
//对模板字段赋值 根据传递进来的map数据的集合进行赋值
for(int i=0;i<vehicleList.size();i++){
String fEntityDetail_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data_FEntity.json");
String fEntity_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data_FEntity.json");
Map<String,String> params=vehicleList.get(i);
Map<String,String> map_fEntityDetail_=new HashMap<>();
Map<String,String> map_fEntity_=new HashMap<>();
for (Map.Entry<String, String> entry : params.entrySet()) {
map_fEntityDetail_.put(entry.getKey(),entry.getValue());
map_fEntity_.put(entry.getKey(),entry.getValue());
}
fEntityDetail_ =KingDeeUtils.replaceTemplateParams(fEntityDetail_, map_fEntityDetail_);
list_fEntityDetail_.add(JSONObject.parseObject(fEntityDetail_,Feature.OrderedField));
fEntity_ =KingDeeUtils.replaceTemplateParams(fEntity_, map_fEntity_);
list_fEntity_.add(JSONObject.parseObject(fEntity_,Feature.OrderedField));
}
jsonFEntityModel_.put("FEntityDetail", JSONArray.parseArray(JSON.toJSONString(list_fEntityDetail_)));
jsonFEntityModel_.put("FEntity", JSONArray.parseArray(JSON.toJSONString(list_fEntity_)));
jsonFEntityData_.put("Model",JSONObject.parseObject(JSON.toJSONString(jsonFEntityModel_),Feature.OrderedField));
jsonObj.put("data",jsonFEntityData_.toJSONString());

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/OtherReceivableBillService.java

@ -27,6 +27,11 @@ public class OtherReceivableBillService extends FinKingDeeService {
//业务表的主表数据集合
Map<String,String> map_fEntityModel_=new HashMap<>();
//物料的数组集合
//单据编号
if(otherReceivable.getBillNo()==null){
return rb.setMsg("单据编号不能为空");
}
map_fEntityModel_.put("FBillNo",otherReceivable.getBillNo());
//业务日期
if(otherReceivable.getBussDate()==null){
return rb.setMsg("业务日期不能为空");

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/otherreceivablebill/data_model.json

@ -3,7 +3,7 @@
"FBillTypeID": {
"FNUMBER": "QTYSD01_SYS"
},
"FBillNo": "",
"FBillNo": "@KD_FBillNo",
"FDATE": "@KD_FDATE",
"FENDDATE_H": "1900-01-01",
"FISINIT": "false",

34
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow2/FlowFeign.java

@ -0,0 +1,34 @@
package com.yxt.anrui.flowable.api.flow2;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/20
**/
@FeignClient(
contextId = "anrui-flowable-Flow",
name = "anrui-flowable",
path = "v2/flow",
fallback = FlowFeignback.class)
public interface FlowFeign {
@ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@ApiOperation(value = "处理流程")
@PostMapping(value = "/handleProsess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv);
}

9
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow2/FlowFeignback.java

@ -0,0 +1,9 @@
package com.yxt.anrui.flowable.api.flow2;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/20
**/
public class FlowFeignback {
}

2
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -51,7 +51,7 @@ public enum ProcDefEnum {
BUSSALESORDERRETURNVEHAPPLY("销售订单退车申请", "process_tzjjs03y:1:1012504"),
BASETRAILEROUTAPPLY("挂车出库申请", "process_tkw6vhfw:1:1705004"),
FINFUNDSAPPLY("款项结转申请", "process_ypafrrvg:1:2257504"),
BUSHANDOVER("交车确认", "process_e8feloik:5:1747508"),
BUSHANDOVER("交车确认", "process_e8feloik:6:2675004"),
LOANFINPOLICYRECORDAPPLY("金融产品政策备案", "process_u45lo7qc:1:2272516"),
LOANOTHERPOLICYRECORDAPPLY("其它融产品备案", "process_7pptyzfc:1:2272524"),
DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:3:2577504"),

15
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -205,6 +205,13 @@ public class FlowableRest implements FlowableFeign {
if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人
userSids.append(processVariables.get("sendRecommendSid").toString()).append(",");
}
//查询是否有设置转办的,抄送给设置转办人员
List<String> zbUserSids = processCommentService.selectByIdAndComment("转办",bv.getInstanceId());
zbUserSids.removeAll(Collections.singleton(null));
if(!zbUserSids.isEmpty()){
String zbUser = String.join(",",zbUserSids);
userSids.append(zbUser).append(",");
}
userSids.deleteCharAt(userSids.length() - 1);
mfq.setUserSids(userSids.toString());
mfq.setOrgPath(createrOrgPath);
@ -284,11 +291,9 @@ public class FlowableRest implements FlowableFeign {
public ResultBean<UpdateFlowFieldVo> startProcess(BusinessVariables dto) {
log.info("startProcess.dto:{}", dto);
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(dto.getBusinessSid())) {
return rb.setMsg("businessSid 不能为空!");
}
if (dto.getFormVariables() == null)
dto.setFormVariables(new HashMap<String, Object>());
Map<String, Object> formVariables = dto.getFormVariables();
@ -296,20 +301,17 @@ public class FlowableRest implements FlowableFeign {
String orgPath = dto.getOrgSidPath();
formVariables.put("createrOrgPath", orgPath);//发起人的组织结构sid
}
dto.getFormVariables().put("businessSid", dto.getBusinessSid());
String nextNodeUserSids_ = dto.getNextNodeUserSids();
if (StringUtils.isBlank(nextNodeUserSids_)) {
ResultBean<UserAndOrgPath> nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreate(dto);
boolean success = nextNodeUserSidsOfCreate.getSuccess();
if (!success) {
// return rb.setMsg(nextNodeUserSidsOfCreate.getMsg());
nextNodeUserSids_ = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
} else {
nextNodeUserSids_ = nextNodeUserSidsOfCreate.getData().getUserSid();
dto.getFormVariables().put(BusinessVariables.ORGPATH, nextNodeUserSidsOfCreate.getData().getOrgPath());
}
}
dto.setNextNodeUserSids(nextNodeUserSids_);
ResultBean resultBean1 = flowableService.businessStart(dto);
@ -431,7 +433,7 @@ public class FlowableRest implements FlowableFeign {
//若下一环节用户与系统管理员一致,则自动审批
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextUserSid)) {
adminContains = true;
}else{
} else {
//下一环节不为空,查询下一环节用户是否有转办人
if (nextUserSid != null) {
List<String> nextUserList = Arrays.asList(nextUserSid.split(","));
@ -531,6 +533,7 @@ public class FlowableRest implements FlowableFeign {
dto.setTaskId(vo.getTaskId());
dto.setTaskDefKey(taskDefKey);
dto.setComment("系统自动跳过");
dto.setNextNodeUserSids("");
return handleProsess(dto, false);
}
List<FlowElement> flowElements = processService.calApprovePath(dto.getModelId(), dto.getModelId(),

14
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowMapper.java

@ -0,0 +1,14 @@
package com.yxt.anrui.flowable.biz.flow2;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.flowable.api.flow.Flowable;
import org.apache.ibatis.annotations.Mapper;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/20
**/
@Mapper
public interface FlowMapper extends BaseMapper<Flowable> {
}

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowMapper.xml

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.flowable.biz.flow2.FlowMapper">
</mapper>

104
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowRest.java

@ -0,0 +1,104 @@
package com.yxt.anrui.flowable.biz.flow2;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.biz.process.ProcessService;
import com.yxt.anrui.flowable.feign.MessageFeign;
import com.yxt.anrui.flowable.feign.form.MessageFlowVo;
import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserByRolesAndOrgQuery;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.flowable.engine.HistoryService;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/20
**/
@RestController
@RequestMapping("v2/flow")
public class FlowRest implements FlowFeign {
Logger log = LoggerFactory.getLogger(FlowRest.class);
@Autowired
private FlowService flowService;
@Autowired
private SysUserFeign sysUserFeign;
@Override
public ResultBean<UpdateFlowFieldVo> startProcess(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
//获取表单中的参数
Map<String, Object> formVariables = bv.getFormVariables();
formVariables = formVariables == null ? new HashMap<>() : formVariables;
//发起人的组织全路径
String orgPath = bv.getOrgSidPath();
formVariables.put("createrOrgPath", orgPath);
formVariables.put("businessSid", bv.getBusinessSid());
//获取下一环节待办人
ResultBean<String> userResultBean = flowService.getNextNodeUser(bv);
bv.setNextNodeUserSids(userResultBean.getData());
//启动流程实例
ResultBean<UpdateFlowFieldVo> startResultBean = flowService.businessStartProcessInstanceById(bv);
return startResultBean;
}
@Override
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = flowService.handleProsess(bv, true);
//添加抄送
log.info("流程返回:{}", JSONObject.toJSONString(updateFlowFieldVoResultBean));
//需要判断办结后再执行 TODO
if (updateFlowFieldVoResultBean.getSuccess()) {
log.info("流程返回:{}", JSONObject.toJSONString(updateFlowFieldVoResultBean));
if ("Event_end".equals(updateFlowFieldVoResultBean.getData().getTaskDefKey())) {
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
HashMap<String, Object> map = new HashMap<>();
map.put("bv", bv);
UpdateFlowFieldVo ufVo = updateFlowFieldVoResultBean.getData();
ufVo.setTaskId(bv.getTaskId());
map.put("uff", ufVo);
flowService.cc(map, bv.getTaskDefKey());
});
} catch (Exception e) {
e.printStackTrace();
return rb.setMsg("抄送失败");
}
}
}
return updateFlowFieldVoResultBean;
}
}

719
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow2/FlowService.java

@ -0,0 +1,719 @@
package com.yxt.anrui.flowable.biz.flow2;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yxt.anrui.flowable.api.flow.Flowable;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.api.flowtask.FlowTask;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.processcomment.ProcessCommentDto;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService;
import com.yxt.anrui.flowable.biz.process.ExpressionCmd;
import com.yxt.anrui.flowable.biz.process.ProcessService;
import com.yxt.anrui.flowable.biz.processcomment.ProcessCommentService;
import com.yxt.anrui.flowable.common.ProcessConstants;
import com.yxt.anrui.flowable.feign.MessageFeign;
import com.yxt.anrui.flowable.feign.form.MessageFlowVo;
import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigFeign;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo;
import com.yxt.anrui.portal.api.sysuser.*;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.*;
import org.flowable.engine.*;
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.DelegationState;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/20
**/
@Service
@Slf4j
public class FlowService extends MybatisBaseService<FlowMapper, Flowable> {
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Autowired
ManagementService managementService;
@Autowired
ProcessEngineConfigurationImpl processEngineConfiguration;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
protected IdentityService identityService;
@Autowired
protected TaskService taskService;
@Autowired
private SysFlowableConfigFeign sysFlowableConfigFeign;
@Autowired
private FlowTaskService flowTaskService;
@Autowired
private ProcessCommentService processCommentService;
@Autowired
protected HistoryService historyService;
@Autowired
private ProcessService processService;
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysFlowccFeign sysFlowccFeign;
public ResultBean<String> getNextNodeUser(BusinessVariables bv) {
ResultBean<String> rb = ResultBean.fireFail();
//根据业务参数取流程流转的环节 信息
List<Map<String, Object>> list = (List<Map<String, Object>>) getProcessCirculationNodesByMap(bv).getData();
if (list == null || list.size() < 2) {
return rb.setMsg("流程设计问题");
}
//取第二个环节的配置角色
Object o = list.get(1).get("candidateGroups");
if (o == null) {
return rb.setMsg("流程设计问题");
}
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(o));
String roleSid = jsonArray.get(0).toString();
//根据组织架构、角色两个参数取相关符合条件的用户信息
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
userQuery.setOrgSidPath(bv.getOrgSidPath());
String nextNodeUserSids_ = "";
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRole(userQuery).getData();
if (sysUserVos == null || sysUserVos.size() < 1) {
nextNodeUserSids_ = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
} else {
StringBuilder nextNodeUserSids = new StringBuilder();
for (SysUserVo su : sysUserVos) {
nextNodeUserSids.append(su.getSid()).append(",");
}
//符合条件的用户的sid,拼接的字符串
nextNodeUserSids_ = nextNodeUserSids.toString();
nextNodeUserSids_ = nextNodeUserSids_.substring(0, nextNodeUserSids_.length() - 1);
}
return rb.success().setData(nextNodeUserSids_);
}
public ResultBean getProcessCirculationNodesByMap(BusinessVariables bv) {
ResultBean<List<Map<String, Object>>> rb = new ResultBean<List<Map<String, Object>>>();
String modelId = bv.getModelId();
List<FlowElement> flowElements = calApprovePath(modelId, bv.getFormVariables());
List<Map<String, Object>> list = new ArrayList<>();
for (FlowElement f : flowElements) {
Map<String, Object> map = new HashMap<>();
map.put("name", f.getName());
map.put("id", f.getId());
String s = JSON.toJSONString(f);
JSONObject jsonObject = JSONObject.parseObject(s);
log.info("item:{}", jsonObject);
Object candidateGroups = jsonObject.get("candidateGroups");
map.put("candidateGroups", candidateGroups);
list.add(map);
}
return rb.setData(list);
}
/**
* 1. 首先拿到BpmnModel所有流程定义信息都可以通过BpmnModel获取若流程尚未发起则用modelId查询最新部署的流程定义数据
* 若流程已经发起可以通过流程实例的processDefinitionId查询流程定义的历史数据
*
* @param variableMap 流程变量用于计算条件分支
*/
public List<FlowElement> calApprovePath(String modelId, Map<String, Object> variableMap) {
BpmnModel bpmnModel = repositoryService.getBpmnModel(modelId);
Collection<FlowElement> flowElements = new ArrayList<>();
Collection<FlowElement> flowElements2 = bpmnModel.getMainProcess().getFlowElements();
flowElements.addAll(flowElements2);
List<FlowElement> passElements = new ArrayList<>();
dueStartElement(passElements, flowElements, variableMap);
return passElements;
}
/**
* 2. 找到开始节点通过它的目标节点然后再不断往下找
*/
private void dueStartElement(List<FlowElement> passElements, Collection<FlowElement> flowElements, Map<String, Object> variableMap) {
Optional<FlowElement> startElementOpt = flowElements.stream().filter(flowElement -> flowElement instanceof StartEvent).findFirst();
startElementOpt.ifPresent(startElement -> {
flowElements.remove(startElement);
List<SequenceFlow> outgoingFlows = ((StartEvent) startElement).getOutgoingFlows();
String targetRef = outgoingFlows.get(0).getTargetRef();
// 根据ID找到FlowElement
FlowElement targetElementOfStartElement = getFlowElement(flowElements, targetRef);
if (targetElementOfStartElement instanceof UserTask) {
this.getPassElementList(passElements, flowElements, targetElementOfStartElement, variableMap);
}
});
}
/**
* 3. 我只用到了UserTaskExclusiveGatewayParallelGateway所以代码里只列举了这三种如果用到了其他的可以再自己补充
*/
private void getPassElementList(List<FlowElement> passElements, Collection<FlowElement> flowElements, FlowElement curFlowElement, Map<String, Object> variableMap) {
// 任务节点
if (curFlowElement instanceof UserTask) {
this.dueUserTaskElement(passElements, flowElements, curFlowElement, variableMap);
return;
}
// 排他网关
if (curFlowElement instanceof ExclusiveGateway) {
this.dueExclusiveGateway(passElements, flowElements, curFlowElement, variableMap);
return;
}
// 并行网关
if (curFlowElement instanceof ParallelGateway) {
this.dueParallelGateway(passElements, flowElements, curFlowElement, variableMap);
}
}
private void dueUserTaskElement(List<FlowElement> passElements, Collection<FlowElement> flowElements,
FlowElement curFlowElement, Map<String, Object> variableMap) {
passElements.add(curFlowElement);
List<SequenceFlow> outgoingFlows = ((UserTask) curFlowElement).getOutgoingFlows();
String targetRef = outgoingFlows.get(0).getTargetRef();
if (outgoingFlows.size() > 1) {
// 找到表达式成立的sequenceFlow
SequenceFlow sequenceFlow = getSequenceFlow(variableMap, outgoingFlows);
targetRef = sequenceFlow.getTargetRef();
}
// 根据ID找到FlowElement
FlowElement targetElement = getFlowElement(flowElements, targetRef);
this.getPassElementList(passElements, flowElements, targetElement, variableMap);
}
private void dueExclusiveGateway(List<FlowElement> passElements, Collection<FlowElement> flowElements, FlowElement curFlowElement, Map<String, Object> variableMap) {
// 获取符合条件的sequenceFlow的目标FlowElement
List<SequenceFlow> exclusiveGatewayOutgoingFlows = ((ExclusiveGateway) curFlowElement).getOutgoingFlows();
flowElements.remove(curFlowElement);
// 找到表达式成立的sequenceFlow
SequenceFlow sequenceFlow = getSequenceFlow(variableMap, exclusiveGatewayOutgoingFlows);
// 根据ID找到FlowElement
FlowElement targetElement = getFlowElement(flowElements, sequenceFlow.getTargetRef());
this.getPassElementList(passElements, flowElements, targetElement, variableMap);
}
private void dueParallelGateway(List<FlowElement> passElements, Collection<FlowElement> flowElements, FlowElement curFlowElement, Map<String, Object> variableMap) {
FlowElement targetElement;
List<SequenceFlow> parallelGatewayOutgoingFlows = ((ParallelGateway) curFlowElement).getOutgoingFlows();
for (SequenceFlow sequenceFlow : parallelGatewayOutgoingFlows) {
targetElement = getFlowElement(flowElements, sequenceFlow.getTargetRef());
this.getPassElementList(passElements, flowElements, targetElement, variableMap);
}
}
private FlowElement getFlowElement(Collection<FlowElement> flowElements, String targetRef) {
return flowElements.stream().filter(flowElement -> targetRef.equals(flowElement.getId())).findFirst().orElse(null);
}
/**
* 4. 根据传入的变量计算出表达式成立的那一条SequenceFlow
*
* @param variableMap
* @param outgoingFlows
* @return
*/
private SequenceFlow getSequenceFlow(Map<String, Object> variableMap, List<SequenceFlow> outgoingFlows) {
Optional<SequenceFlow> sequenceFlowOpt = outgoingFlows.stream().filter(item -> {
try {
return this.getElValue(item.getConditionExpression(), variableMap);
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}).findFirst();
return sequenceFlowOpt.orElse(outgoingFlows.get(0));
}
private boolean getElValue(String exp, Map<String, Object> variableMap) {
return managementService.executeCommand(new ExpressionCmd(runtimeService, processEngineConfiguration, null, exp, variableMap));
}
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
String procDefId = bv.getModelId();
String userSid = bv.getUserSid();
String nextNodeUserSids = bv.getNextNodeUserSids();
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> variablesSeconds = bv.getFormVariables();
//根据流程定义id查询
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId)
.latestVersion().singleResult();
if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) {
return rb.setMsg("流程已被挂起,请先激活流程");
}
// 设置流程发起人Id到流程中
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(userSid);
SysUserVo sysUser = sysUserVoResultBean.getData();
identityService.setAuthenticatedUserId(sysUser.getSid());
variables.put(ProcessConstants.PROCESS_INITIATOR, userSid);
variables.put(ProcessConstants.USER_TYPE_ASSIGNEE, userSid);
ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables);
// 给第一步申请人节点设置任务执行人和意见 todo:第一个节点不设置为申请人节点有点问题?
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
if (Objects.nonNull(task)) {
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.START.getType(),
sysUser.getName() + "发起流程申请");
taskService.setAssignee(task.getId(), userSid);
taskService.setVariablesLocal(task.getId(), variables);
taskService.complete(task.getId(), variables);
}
//根据流程实例的id查询最新的待办环节
ResultBean<List<LatestTaskVo>> latestTasksNew = flowTaskService.getLatestTasksNew(processInstance.getId());
List<LatestTaskVo> data = latestTasksNew.getData();
LatestTaskVo latestTaskVo = data.get(0);
String id_ = latestTaskVo.getId_();
String task_def_key_ = latestTaskVo.getTask_def_key_();
//查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(id_, nextNodeUserSids);
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextNodeUserSids)) {
bv.setModelId(procDefId);
bv.setInstanceId(task.getProcessInstanceId());
bv.setTaskId(id_);
bv.setUserSid(nextNodeUserSids);
bv.setBusinessSid(bv.getBusinessSid());
bv.setTaskDefKey(task_def_key_);
bv.setFormVariables(variables);
bv.setOrgSidPath(bv.getOrgSidPath());
bv.setComment("系统自动跳过!");
bv.setFormVariables(variablesSeconds);
bv.setNextNodeUserSids("");
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = handleProsess(bv, false);
if (updateFlowFieldVoResultBean.getSuccess() && updateFlowFieldVoResultBean.getData() != null) {
UpdateFlowFieldVo vo = updateFlowFieldVoResultBean.getData();
updateFlowFieldVo.setProcInsId(vo.getProcInsId());
updateFlowFieldVo.setNodeState(vo.getNodeState());
updateFlowFieldVo.setTaskId(vo.getTaskId());
updateFlowFieldVo.setTaskDefKey(vo.getTaskDefKey());
updateFlowFieldVo.setProcDefId(bv.getModelId());
updateFlowFieldVo.setSid(bv.getBusinessSid());
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
}
if (bv.getUserSid().equals(nextNodeUserSids)) {
//如果申请人与下一环节审批人相同,则自动审批
bv.setModelId(procDefId);
bv.setInstanceId(task.getProcessInstanceId());
bv.setTaskId(id_);
bv.setUserSid(nextNodeUserSids);
bv.setBusinessSid(bv.getBusinessSid());
bv.setTaskDefKey(task_def_key_);
bv.setFormVariables(variables);
bv.setOrgSidPath(bv.getOrgSidPath());
bv.setFormVariables(variablesSeconds);
bv.setComment("因与申请人相同,系统自动处理,需以下一级审批人审批意见为准!");
bv.setNextNodeUserSids("");
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = handleProsess(bv, false);
if (updateFlowFieldVoResultBean.getSuccess() && updateFlowFieldVoResultBean.getData() != null) {
UpdateFlowFieldVo vo = updateFlowFieldVoResultBean.getData();
updateFlowFieldVo.setProcInsId(vo.getProcInsId());
updateFlowFieldVo.setNodeState(vo.getNodeState());
updateFlowFieldVo.setTaskId(vo.getTaskId());
updateFlowFieldVo.setTaskDefKey(vo.getTaskDefKey());
updateFlowFieldVo.setProcDefId(bv.getModelId());
updateFlowFieldVo.setSid(bv.getBusinessSid());
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
}
updateFlowFieldVo.setProcInsId(task.getProcessInstanceId());
updateFlowFieldVo.setNodeState(latestTaskVo.getName_());
updateFlowFieldVo.setTaskId(id_);
updateFlowFieldVo.setTaskDefKey(task_def_key_);
updateFlowFieldVo.setProcDefId(bv.getModelId());
updateFlowFieldVo.setSid(bv.getBusinessSid());
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
/**
* 查询下一环节用户是否有转办用户若有转办用户则添加转办评论
*
* @param nextNodeUserSids 下一环节用户
* @param instanceId 实例id
* @return
*/
public String change(String nextNodeUserSids, String instanceId) {
//查询下一环节是否有转办
String firstSid = "";
String firstName = "";
//默认无转办
boolean isChange = false;
if (StringUtils.isNotBlank(nextNodeUserSids)) {
List<String> nextUserList = Arrays.asList(nextNodeUserSids.split(","));
if (nextUserList.size() == 1) {
firstSid = nextUserList.get(0);
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(firstSid);
if (userVoResultBean.getData() != null) {
firstName = userVoResultBean.getData().getName();
}
SysFlowableConfigQuery sysFlowableConfigQuery = new SysFlowableConfigQuery();
sysFlowableConfigQuery.setUserSid(firstSid);
sysFlowableConfigQuery.setNowDate(new Date());
ResultBean<SysFlowableConfigVvo> sysFlowableConfigVvoResultBean = sysFlowableConfigFeign.selectByUserSid(sysFlowableConfigQuery);
if (sysFlowableConfigVvoResultBean.getData() != null) {
if (StringUtils.isNotBlank(sysFlowableConfigVvoResultBean.getData().getChangeUserSid())) {
nextNodeUserSids = sysFlowableConfigVvoResultBean.getData().getChangeUserSid();
isChange = true;
}
}
}
}
if (isChange) {//添加评论
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(nextNodeUserSids);
ProcessCommentDto processCommentDto = new ProcessCommentDto();
processCommentDto.setReviewerSid(firstSid);
if (userVoResultBean.getData() != null) {
String changeName = userVoResultBean.getData().getName();
processCommentDto.setReviewer(firstName);
processCommentDto.setContent("交" + changeName + "转办");
}
processCommentDto.setTime(new Date());
processCommentDto.setProcessId(instanceId);
processCommentService.saveOrUpdateDto(processCommentDto);
}
return nextNodeUserSids;
}
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv, boolean b) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
//获取表单中的参数
Map<String, Object> formVariables = bv.getFormVariables();
formVariables = formVariables == null ? new HashMap<>() : formVariables;
formVariables.put("businessSid", bv.getBusinessSid());
String nextUserSid = bv.getNextNodeUserSids();
String taskId = bv.getTaskId();
String userSid = bv.getUserSid();
String instanceId = bv.getInstanceId();
String comment = bv.getComment();
String nodeState = "";
String taskDefKey = "";
String orgPath = bv.getOrgSidPath();
//设置下一环节审批人是否自动审批通过,默认否
boolean contains = false;
//设置是否是管理员自动审批,默认否
boolean adminContains = false;
if (StringUtils.isBlank(nextUserSid)) {
ResultBean<String> stringResultBean = getNextNodeUserSidsOfSubmit(bv);
if (!stringResultBean.getSuccess()) {
//下一环节用户为空的情况
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
} else {
nextUserSid = stringResultBean.getData();
}
} else {
//若下一环节用户与系统管理员一致,则自动审批
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextUserSid)) {
adminContains = true;
}
}
//查询任务id为taskId的任务是否存在
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (Objects.isNull(task)) {
return rb.setMsg("任务不存在");
}
String assignee = task.getAssignee();
if (b && (StringUtils.isNotBlank(assignee) && assignee.indexOf(userSid) < 0)) {
return rb.setMsg("当前用户不是环节的待办人,不能进行办理操作!");
}
if (DelegationState.PENDING.equals(task.getDelegationState())) {
//加签
taskService.addComment(taskId, instanceId,
FlowComment.DELEGATE.getType(), comment);
taskService.resolveTask(taskId, formVariables);
} else {
//当前环节办理通过,且将下一环节用户放入流程中
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment);
log.error("taskid:{},userSid:{}", taskId, userSid);
log.error("formVariables:{}", JSON.toJSONString(formVariables));
taskService.setAssignee(taskId, userSid);
taskService.complete(taskId, formVariables);//当前用户办理通过
//根据流程实例的id取最新的待办环节,给环节设置上用户sid
ResultBean<List<LatestTaskVo>> ll = flowTaskService.getLatestTasksNew(instanceId);
if (ll.getData().size() > 0) {
LatestTaskVo latestTaskVo = ll.getData().get(0);
String id_ = latestTaskVo.getId_();
//查询下一环节用户是否有转办人
nextUserSid = change(nextUserSid, bv.getInstanceId());
taskService.setAssignee(id_, nextUserSid);//将下一环节用户放入流程中
vo.setTaskId(id_);
//在act_ru_variable表中增加环节上的业务参数的变量
taskService.setVariablesLocal(id_, formVariables);
nodeState = latestTaskVo.getName_();
taskDefKey = latestTaskVo.getTask_def_key_();
} else {
nodeState = FlowComment.SETTLE.getRemark();
taskDefKey = "Event_end";
vo.setNodeState(FlowComment.SETTLE.getRemark());
}
}
//设置管理员是否自动审批的字段是否是是。//若下一环节用户与系统管理员一致,则自动审批
if (adminContains) {
bv.setUserSid(nextUserSid);
bv.setTaskId(vo.getTaskId());
bv.setTaskDefKey(taskDefKey);
bv.setComment("系统自动跳过");
bv.setNextNodeUserSids("");
return handleProsess(bv, false);
}
//获取该流程所有要走的环节节点
List<FlowElement> flowElements = calApprovePath(bv.getModelId(),
bv.getFormVariables());
for (int i = 0; i < flowElements.size(); i++) {
FlowElement flowElement = flowElements.get(i);
String id = flowElement.getId();
if (taskDefKey.equals(id) && i + 1 < flowElements.size()) {
//获取下下一环节
FlowElement flowElement1 = flowElements.get(i + 1);
List<SysUserVo> sysUserVoLists2 = new ArrayList<>();
if (i + 2 < flowElements.size()) {
//获取下下下一环节用户
FlowElement flowElement2 = flowElements.get(i + 2);
if (flowElement2 instanceof UserTask) {
UserTask userTask = (UserTask) flowElement2;
List<String> candidateGroups = userTask.getCandidateGroups();
UserssQuery userssQuery = new UserssQuery();
userssQuery.setCandidateGroups(candidateGroups);
userssQuery.setOrgSidPath(orgPath);
sysUserVoLists2 = sysUserFeign.getUsersByRoles(userssQuery).getData();
if (sysUserVoLists2 == null) {
sysUserVoLists2 = new ArrayList<>();
}
}
}
if (flowElement1 instanceof UserTask) {
UserTask userTask = (UserTask) flowElement1;
List<String> candidateGroups = userTask.getCandidateGroups();
List<SysUserVo> sysUserVoLists = new ArrayList<>();
UserssQuery userssQuery = new UserssQuery();
userssQuery.setCandidateGroups(candidateGroups);
userssQuery.setOrgSidPath(orgPath);
sysUserVoLists = sysUserFeign.getUsersByRoles(userssQuery).getData();
if (sysUserVoLists == null) {
sysUserVoLists = new ArrayList<>();
}
//当前环节运营部总经理 刘丽艳 点击同意 下一环节 事业部副总经理 (nextUserSid) 和事业部总经理(sysUserVoLists.get(0).getSid())
//判断查询回来的用户的集合size是1 并且用户的sid和下一环节的用户的sid相同。
if (sysUserVoLists.size() == 1 && sysUserVoLists.get(0).getSid().equals(nextUserSid)) {
contains = true;
break;
}
//如果下下一环节无用户,下下下一环节用户与下一环节用户相同且只有一个,则下一环节用户自动审批。
if (sysUserVoLists.size() == 0 && sysUserVoLists2.size() == 1 && sysUserVoLists2.get(0).getSid().equals(nextUserSid)) {
contains = true;
break;
}
}
}
if (contains) {
break;
}
}
if (contains) {
bv.setUserSid(nextUserSid);
bv.setTaskId(vo.getTaskId());
bv.setTaskDefKey(taskDefKey);
bv.setComment("因与下一级审批人相同,系统自动处理,需以下一级审批人审批意见为准!");
return handleProsess(bv, false);
}
vo.setProcInsId(instanceId);
vo.setProcDefId(bv.getModelId());
vo.setNodeState(nodeState);
vo.setTaskDefKey(taskDefKey);
vo.setSid(bv.getBusinessSid());
return rb.success().setData(vo);
}
/**
* 获取下一环节用户
*
* @param bv
* @return
*/
public ResultBean<String> getNextNodeUserSidsOfSubmit(BusinessVariables bv) {
ResultBean<String> rb = ResultBean.fireFail();
String orgPath = bv.getOrgSidPath();
String taskDefKey = bv.getTaskDefKey();
//根据业务参数取流程流转的环节 信息
List<Map<String, Object>> list = (List<Map<String, Object>>) getProcessCirculationNodesByMap(bv).getData();
Map<String, Object> task_map = new HashMap<>();
boolean endTask = true;
for (int i = 0; i < list.size(); i++) {
String id = list.get(i).get("id").toString();
if (id.equals(taskDefKey) && i + 1 < list.size()) {
task_map = list.get(i + 1);
endTask = false;
}
}
if (endTask) {
task_map.put("name", "结束");
return rb.success();
} else {
Object o = task_map.get("candidateGroups");
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(o));
String roleSid = jsonArray.get(0).toString();
//根据组织架构、角色两个参数取相关符合条件的用户信息
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
userQuery.setOrgSidPath(orgPath);
String nextNodeUserSids_ = "";
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRole(userQuery).getData();
if (sysUserVos == null || sysUserVos.size() < 1) {
return rb;
} else {
StringBuilder nextNodeUserSids = new StringBuilder();
for (SysUserVo su : sysUserVos) {
nextNodeUserSids.append(su.getSid()).append(",");
}
//符合条件的用户的sid,拼接的字符串
nextNodeUserSids_ = nextNodeUserSids.toString();
nextNodeUserSids_ = nextNodeUserSids_.substring(0, nextNodeUserSids_.length() - 1);
}
return rb.success().setData(nextNodeUserSids_);
}
}
/**
* 流程抄送的功能
*
* @param map
* @return
*/
public ResultBean cc(Map<String, Object> map, String taskDefKey) {
ResultBean rb = ResultBean.fireFail();
log.info("FlowableRest-cc:{}", JSONObject.toJSONString(map));
Object bv1 = map.get("bv");
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(bv1, bv);
Object uff1 = map.get("uff");
UpdateFlowFieldVo uff = new UpdateFlowFieldVo();
BeanUtil.copyProperties(uff1, uff);
uff.setTaskDefKey(taskDefKey);
//流程定义的id
String modelId = bv.getModelId();
//将modelId根据冒号:分成三部分,取第一部分作为key
List<String> stringList = Arrays.asList(modelId.split(":"));
modelId = stringList.get(0);
//抄送的角色的sid
ResultBean<SysFlowccVo> roleSidByModelId = sysFlowccFeign.getRoleSidByModelId(modelId);
//组织机构sid
String orgSidPath = bv.getOrgSidPath();
if (roleSidByModelId.getData() == null) {
log.info("抄送失败,没有配置对应的角色!");
return rb.setMsg("抄送失败,没有配置对应的角色!");
}
SysFlowccVo data = roleSidByModelId.getData();
if (StringUtils.isBlank(data.getRoleSid())) {
log.info("抄送失败,没有配置对应的角色!");
return rb.setMsg("抄送失败,没有配置对应的角色!");
}
List<String> list = Arrays.asList(data.getRoleSid().split(","));
UserByRolesAndOrgQuery userQuery = new UserByRolesAndOrgQuery();
userQuery.setRoleSids(list);
userQuery.setOrgSidPath(orgSidPath);
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRoles(userQuery).getData();
if (sysUserVos == null || sysUserVos.size() < 1) {
log.info("抄送失败,没有用户!");
return rb.setMsg("抄送失败,没有用户!");
}
StringBuilder userName = new StringBuilder();
StringBuilder userSids = new StringBuilder();
sysUserVos.forEach(f -> {
userName.append(f.getName()).append(",");
userSids.append(f.getSid()).append(",");
});
//抄送的业务逻辑
MessageFlowableQuery mfq = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(uff, messageFlowVo);
mfq.setUfVo(messageFlowVo);
//移动端的参数
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery()
.includeProcessVariables().taskId(bv.getTaskId()).singleResult();
if (historicTaskInstance == null) {
log.info("抄送失败:没有获取到业务参数!");
return rb.setMsg("抄送失败!");
}
Map<String, Object> processVariables = historicTaskInstance.getProcessVariables();
String createrOrgPath = (String) processVariables.get("createrOrgPath");
if (historicTaskInstance == null) {
log.info("抄送失败:没有获取到业务参数!");
return rb.setMsg("抄送失败!");
}
Map<String, Object> app = new HashMap<>();
if (processVariables.get("app") != null) {
app = (Map<String, Object>) processVariables.get("app");
}
log.info("抄送方法-historicTaskInstance:{}", JSONObject.toJSONString(historicTaskInstance));
mfq.setAppMap(app);
mfq.setBusinessSid(bv.getBusinessSid());
mfq.setMsgContent("系统抄送的流程审批,请查看");
// act_re_procdef
Map<String, String> process = processService.getProcessDefByDefId(historicTaskInstance.getProcessDefinitionId());
log.info("抄送成功-process:{}", process);
if (process == null) {
log.info("抄送失败,流程定义不存在!");
return rb.setMsg("抄送失败,流程定义不存在!");
}
mfq.setModuleName(process.get("NAME_"));
if (processVariables.containsKey("orderNames")) {
mfq.setMsgTitle(processVariables.get("orderNames").toString());
} else {
mfq.setMsgTitle(process.get("NAME_"));
}
if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人
userSids.append(processVariables.get("sendRecommendSid").toString()).append(",");
}
//查询是否有设置转办的,抄送给设置转办人员
List<String> zbUserSids = processCommentService.selectByIdAndComment("转办",bv.getInstanceId());
zbUserSids.removeAll(Collections.singleton(null));
if(!zbUserSids.isEmpty()){
String zbUser = String.join(",",zbUserSids);
userSids.append(zbUser).append(",");
}
userSids.deleteCharAt(userSids.length() - 1);
mfq.setUserSids(userSids.toString());
mfq.setOrgPath(createrOrgPath);
ResultBean<String> resultBean = messageFeign.pushMessageCC(mfq);
log.info("抄送成功:{}", userName.toString());
log.info("抄送成功-resultBean:{}", resultBean);
if (!resultBean.getSuccess()) {
log.info("抄送失败,同送消息异常!:{}", JSONObject.toJSONString(resultBean));
return rb.setMsg("抄送失败,同送消息异常!");
}
return rb.success().setMsg("抄送" + userName.toString() + "成功!");
}
}

2
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.java

@ -69,4 +69,6 @@ public interface ProcessCommentMapper extends BaseMapper<ProcessComment> {
ProcessComment fetchBySid(@Param("sid")String sid);
void insertByDto(ProcessCommentDto dto);
List<String> selectByIdAndComment(@Param("comment") String comment, @Param("instanceId") String instanceId);
}

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentMapper.xml

@ -17,4 +17,8 @@
insert into `process_comment` ( `sid`, `reviewer`, `reviewerSid`, `time`, `content`, `processId`, `processInstSid`,processFile)
values(#{sid},#{reviewer},#{reviewerSid},#{time},#{content},#{processId},#{processInstSid},#{processFile});
</insert>
<select id="selectByIdAndComment" resultType="java.lang.String">
select reviewerSid from process_comment where content like concat('%',#{comment}) and processId = #{instanceId}
</select>
</mapper>

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java

@ -135,4 +135,8 @@ public class ProcessCommentService extends MybatisBaseService<ProcessCommentMapp
}
return commentList;
}
public List<String> selectByIdAndComment(String comment, String instanceId) {
return baseMapper.selectByIdAndComment(comment, instanceId);
}
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanpreloancreditapply/LoanPreloanCreditApplyVo.java

@ -67,4 +67,8 @@ public class LoanPreloanCreditApplyVo implements Vo {
private String zffkjg;
@ApiModelProperty("申诉结果")
private String ssjg;
@ApiModelProperty("是否可以办理")
private Boolean isEdit;
@ApiModelProperty("是否可以删除")
private Boolean isDelete;
}

20
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanpreloancreditapply/LoanPreloanCreditApplyService.java

@ -141,6 +141,16 @@ public class LoanPreloanCreditApplyService extends MybatisBaseService<LoanPreloa
}
IPage<LoanPreloanCreditApply> page = PagerUtil.queryToPage(pq);
IPage<LoanPreloanCreditApplyVo> pagging = baseMapper.selectPageVo(page, qw);
for (LoanPreloanCreditApplyVo record : pagging.getRecords()) {
String state = record.getState();
if ("1".equals(state)){
record.setIsEdit(true);
record.setIsDelete(true);
}else {
record.setIsEdit(false);
record.setIsDelete(false);
}
}
PagerVo<LoanPreloanCreditApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@ -224,6 +234,16 @@ public class LoanPreloanCreditApplyService extends MybatisBaseService<LoanPreloa
}
IPage<LoanPreloanCreditApply> page = PagerUtil.queryToPage(pq);
IPage<LoanPreloanCreditApplyVo> pagging = baseMapper.selectPageVo(page, qw);
for (LoanPreloanCreditApplyVo record : pagging.getRecords()) {
String state = record.getState();
if ("0".equals(state)){
record.setIsEdit(true);
record.setIsDelete(false);
}else {
record.setIsEdit(false);
record.setIsDelete(false);
}
}
PagerVo<LoanPreloanCreditApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}

22
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单1.docx

@ -0,0 +1,22 @@
金融方案预估报价单
车型:
${model!}
融资项目:
${templateName!}
总期数
${period!}
前${times!}期月还
${previousRepay!}
剩余期数月还
${monthlyRepay!}
预计首期还款日
${returnTime!}
名义(留购)价款:
${nominalPrice!}
注:结清时需交纳此费用
客户签章:
年 月 日

23
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单2.docx

@ -0,0 +1,23 @@
金融方案预估报价单
车型:
${model!}
融资项目:
${templateName!}
预估应收合计
${amountTotal!}
总期数
${period!}
前${times!}期月还
${previousRepay!}
剩余期数月还
${monthlyRepay!}
名义(留购)价款:
${nominalPrice!}
预计首期还款日
${returnTime!}
客户签章:
年 月 日

29
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单3.docx

@ -0,0 +1,29 @@
金融方案预估报价单
车型:
${model!}
融资项目:
${templateName!}
预估应收合计
${amountTotal!}
贷款保证金
¥${bondAmounts!}
落户保证金
¥${depositSettle!}
保险保证金
¥${depositPremium!}
总期数
${period!}
前${times!}期月还
${previousRepay!}
剩余期数月还
${monthlyRepay!}
名义(留购)价款:
¥${nominalPrice!}
预计首期还款日
${returnTime!}
客户签章:
年 月 日

42
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/template_word/金融方案预估报价单4.docx

@ -0,0 +1,42 @@
金融方案预估报价单
车型:
${model!}
融资项目:
${templateName!}
预估应收合计:
${amountTotal!}
融资首付:
¥${downPayAmounts!}
贷款保证金:
¥${bondAmounts!}
服务费:
¥${serviceAmount!}
代收首年保险费:
¥${proxyPremium!}
落户保证金:
¥${depositSettle!}
补车价:
¥${vehOtherPrice!}
代收购置税:
¥${proxyPurchasetax!}
保险保证金:
¥${depositPremium!}
其他费用:
¥${otherAmount!}
代收意外险:
${proxyAccidentPremium!}
总期数:
${period!}
前${times!}期月还:
${previousRepay!}
剩余期数月还:
${monthlyRepay!}
名义(留购)价款:
¥${nominalPrice!}
预计首期还款日:
${returnTime!}
客户签章:
年 月 日

4
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DisDetailsVo.java

@ -1,5 +1,6 @@
package com.yxt.anrui.terminal.api.autoservice.distributor;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
@ -22,4 +23,7 @@ public class DisDetailsVo implements Vo {
private DisFileVo fileInfo;
private List<DisRecordVo> records = new ArrayList<>();
@JsonProperty("procInsId")
private String procInstId;
private String taskId;
}

5
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DisInitDetailsVo.java

@ -1,5 +1,6 @@
package com.yxt.anrui.terminal.api.autoservice.distributor;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -21,6 +22,8 @@ public class DisInitDetailsVo implements Vo {
private Integer invoiceInfoState;
@ApiModelProperty(value = "文件信息状态")
private Integer fileInfoState;
@JsonProperty("procInsId")
private String procInstId;
private String taskId;
private List<DisInitRecordVo> records;
}

44
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DistributorFeign.java

@ -1,13 +1,20 @@
package com.yxt.anrui.terminal.api.autoservice.distributor;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.CompleteDistributorDto;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.DistributorFlowableQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.DistributorTaskQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.SubmitDistributorApplyDto;
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 org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* @Author dimengzhe
* @Date 2022/7/13 14:38
@ -85,5 +92,42 @@ public interface DistributorFeign {
@PostMapping("/saveDistributorFileInfo")
@ResponseBody
ResultBean saveDistributorFileInfo(@RequestBody DisFileDto dto);
//----------------------------------流程代码-------------------------------------------------
@ApiOperation("提交流程")
@PostMapping("/submitDistributorBaseInfo")
@ResponseBody
ResultBean submitDistributorBaseInfo(@Valid @RequestBody SubmitDistributorApplyDto dto);
@ApiOperation("办理")
@PutMapping("/agreeDistributorBaseInfo")
@ResponseBody
ResultBean agreeDistributorBaseInfo(@Valid @RequestBody CompleteDistributorDto dto);
@ApiOperation("从分公司到风控中心办理")
@PutMapping("/agreeCompanyToDivisionOperate")
@ResponseBody
ResultBean agreeCompanyToDivisionOperate(@Valid @RequestBody CompleteDistributorDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectDistributorBaseInfo")
@ResponseBody
ResultBean rejectDistributorBaseInfo(@Valid @RequestBody DistributorTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallDistributorBaseInfo")
@ResponseBody
ResultBean recallDistributorBaseInfo(@Valid @RequestBody DistributorTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopDistributorBaseInfo")
@ResponseBody
ResultBean stopDistributorBaseInfo(@Valid @RequestBody DistributorTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@Valid @SpringQueryMap DistributorFlowableQuery query);
}

4
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/DistributorVo.java

@ -33,7 +33,7 @@ public class DistributorVo implements Vo {
private String invoPhone;
@ApiModelProperty(value = "成立日期")
private String setUpTime;
// private String nodeState;
private boolean updateBtn;
}

33
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/CompleteDistributorDto.java

@ -0,0 +1,33 @@
package com.yxt.anrui.terminal.api.autoservice.distributor.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class CompleteDistributorDto implements Dto {
private static final long serialVersionUID = -1634177638238174363L;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:procInsId")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
}

21
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/DistributorFlowableQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.terminal.api.autoservice.distributor.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class DistributorFlowableQuery implements Query {
private static final long serialVersionUID = -5879668616710833830L;
@ApiModelProperty(value = "节点key")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
@NotNull(message = "参数错误:next")
private Integer next;
}

44
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/DistributorTaskQuery.java

@ -0,0 +1,44 @@
package com.yxt.anrui.terminal.api.autoservice.distributor.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class DistributorTaskQuery implements Query {
private static final long serialVersionUID = -6061453269533691015L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
@JsonProperty("procInsId")
private String instanceId;
}

22
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/distributor/flowable/SubmitDistributorApplyDto.java

@ -0,0 +1,22 @@
package com.yxt.anrui.terminal.api.autoservice.distributor.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/7/14 9:15
*/
@Data
public class SubmitDistributorApplyDto implements Dto {
@ApiModelProperty("distributorSid")
private String distributorSid;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程实例id")
@JsonProperty("procInsId")
private String instanceId;
}

39
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/distributor/DistributorRest.java

@ -1,6 +1,10 @@
package com.yxt.anrui.terminal.biz.autoservice.distributor;
import com.yxt.anrui.terminal.api.autoservice.distributor.*;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.CompleteDistributorDto;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.DistributorFlowableQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.DistributorTaskQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.SubmitDistributorApplyDto;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -86,4 +90,39 @@ public class DistributorRest implements DistributorFeign {
public ResultBean saveDistributorFileInfo(DisFileDto dto) {
return distributorService.saveDistributorFileInfo(dto);
}
@Override
public ResultBean submitDistributorBaseInfo(SubmitDistributorApplyDto dto) {
return distributorService.submitDistributorBaseInfo(dto);
}
@Override
public ResultBean agreeDistributorBaseInfo(CompleteDistributorDto dto) {
return distributorService.agreeDistributorBaseInfo(dto);
}
@Override
public ResultBean agreeCompanyToDivisionOperate(CompleteDistributorDto dto) {
return distributorService.agreeCompanyToDivisionOperate(dto);
}
@Override
public ResultBean rejectDistributorBaseInfo(DistributorTaskQuery query) {
return distributorService.rejectDistributorBaseInfo(query);
}
@Override
public ResultBean recallDistributorBaseInfo(DistributorTaskQuery query) {
return distributorService.recallDistributorBaseInfo(query);
}
@Override
public ResultBean stopDistributorBaseInfo(DistributorTaskQuery query) {
return distributorService.stopDistributorBaseInfo(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(DistributorFlowableQuery query) {
return distributorService.getFlowOperateTitle(query);
}
}

139
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/autoservice/distributor/DistributorService.java

@ -4,7 +4,19 @@ import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.yxt.anrui.base.api.basedistributor.BaseDistributorFeign;
import com.yxt.anrui.base.api.basedistributor.app.*;
import com.yxt.anrui.base.api.basedistributor.flow.AppSubmitDistributorApplyDto;
import com.yxt.anrui.base.api.basedistributor.flow.BaseDistributorCompleteDto;
import com.yxt.anrui.base.api.basedistributor.flow.BaseDistributorTaskQuery;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.*;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.CompleteDistributorDto;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.DistributorFlowableQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.DistributorTaskQuery;
import com.yxt.anrui.terminal.api.autoservice.distributor.flowable.SubmitDistributorApplyDto;
import com.yxt.anrui.terminal.config.CoverUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -13,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@ -27,6 +40,11 @@ public class DistributorService {
@Autowired
private BaseDistributorFeign baseDistributorFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
public ResultBean<PagerVo<DistributorVo>> pageList(PagerQuery<DistributorQuery> pagerQuery) {
ResultBean<PagerVo<DistributorVo>> rb = ResultBean.fireFail();
@ -166,4 +184,125 @@ public class DistributorService {
}
return rb.success();
}
public ResultBean submitDistributorBaseInfo(SubmitDistributorApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
AppSubmitDistributorApplyDto submitDistributorApplyDto = new AppSubmitDistributorApplyDto();
BeanUtil.copyProperties(dto, submitDistributorApplyDto);
ResultBean resultBean = baseDistributorFeign.submitDistributor(submitDistributorApplyDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success();
}
public ResultBean agreeDistributorBaseInfo(CompleteDistributorDto dto) {
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
BaseDistributorCompleteDto baseDistributorCompleteDto = new BaseDistributorCompleteDto();
BeanUtil.copyProperties(dto, baseDistributorCompleteDto);
baseDistributorCompleteDto.setOrgSidPath(orgSidPath);
ResultBean resultBean = baseDistributorFeign.complete(baseDistributorCompleteDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean agreeCompanyToDivisionOperate(CompleteDistributorDto dto) {
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
BaseDistributorCompleteDto baseDistributorCompleteDto = new BaseDistributorCompleteDto();
BeanUtil.copyProperties(dto, baseDistributorCompleteDto);
baseDistributorCompleteDto.setOrgSidPath(orgSidPath);
ResultBean resultBean = baseDistributorFeign.companyToDivisionOperate(baseDistributorCompleteDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectDistributorBaseInfo(DistributorTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
BaseDistributorTaskQuery taskQuery = new BaseDistributorTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = baseDistributorFeign.taskReject(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallDistributorBaseInfo(DistributorTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
BaseDistributorTaskQuery taskQuery = new BaseDistributorTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = baseDistributorFeign.revokeProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopDistributorBaseInfo(DistributorTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
BaseDistributorTaskQuery taskQuery = new BaseDistributorTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = baseDistributorFeign.breakProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(DistributorFlowableQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
com.yxt.anrui.base.api.basedistributor.flow.GetNodeQuery getNodeQuery = new com.yxt.anrui.base.api.basedistributor.flow.GetNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<com.yxt.anrui.base.api.basedistributor.flow.GetNodeVo>> getPreviousNodesForReject = baseDistributorFeign.getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<com.yxt.anrui.base.api.basedistributor.flow.GetNodeVo>> getNextNodesForSubmit = baseDistributorFeign.getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
}

1158
工作内容需要的文档/单据模板/款项结转打印模板/kxjz.ftl

File diff suppressed because it is too large

7
工作内容需要的文档/单据模板/款项结转打印模板/款项结转(调账申请).doc

@ -1,6 +1,9 @@
|调账申请 |
|${saleDate!} |
|调账类|合同编号 |客户 |物料编码 |
|型 | |名称 | |
|调账类型 |合同编号 |客户名称 |物料编码 |调出金额 |调入金额 |
|${tz.tzTyp|${tz.conNo|${tz.name!|${tz.vinNo|${tz.dcje!|${tz.drje!|
|e!} |!} |} |!} |} |} |
|申请人|${makeName!} |审核 |${spName!} |
|: | |人: | |

Loading…
Cancel
Save