diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributorapply/BaseDistributorApply.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributorapply/BaseDistributorApply.java index 8d237ede1c..344cafaa8c 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributorapply/BaseDistributorApply.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basedistributorapply/BaseDistributorApply.java @@ -55,7 +55,9 @@ public class BaseDistributorApply extends BaseEntity { @ApiModelProperty("申请人") private String applyName; // 申请人 @ApiModelProperty("销售专员sid") - private String salesmanSid; // 销售专员sid + private String staffSid; // 销售专员sid + @ApiModelProperty("销售专员用户sid") + private String salesUserSid; // 销售专员sid @ApiModelProperty("销售专员") private String salesman; // 销售专员 @ApiModelProperty("申请日期") diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java index 27631e88cb..30802aa514 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basedistributorapply/BaseDistributorApplyService.java @@ -250,8 +250,8 @@ public class BaseDistributorApplyService extends MybatisBaseService variables = BeanUtil.beanToMap(dto); Map appMap = new HashMap<>(); //若有网关,则赋值网关中判断的字段。 - boolean isDecide = true; - //去查询是否同意 - if (StringUtils.isNotBlank(entity.getAgree())) { - if (entity.getAgree().equals("0")) { - isDecide = false; - } - } - variables.put("isDecide", isDecide); +// boolean isDecide = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(entity.getAgree())) { +// if (entity.getAgree().equals("0")) { +// isDecide = false; +// } +// } +// variables.put("isDecide", isDecide); variables.put("businessSid", businessSid); appMap.put("sid", businessSid); variables.put("app", appMap); @@ -696,7 +712,11 @@ public class BaseDistributorApplyService extends MybatisBaseService variables = new HashMap<>(); Map appMap = new HashMap<>(); //若有网关,则赋值网关中判断的字段。 - boolean isDecide = true; - //去查询是否同意 - if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) { - if (baseDistributorApply.getAgree().equals("0")) { - isDecide = false; - } - } - variables.put("isDecide", isDecide); +// boolean isDecide = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) { +// if (baseDistributorApply.getAgree().equals("0")) { +// isDecide = false; +// } +// } +// variables.put("isDecide", isDecide); variables.put("businessSid", businessSid); appMap.put("sid", businessSid); variables.put("app", appMap); @@ -1069,14 +1089,14 @@ public class BaseDistributorApplyService extends MybatisBaseService resultBean = flowableFeign.taskReject(flowTaskVo); if (!resultBean.getSuccess()) { @@ -1191,14 +1211,14 @@ public class BaseDistributorApplyService extends MybatisBaseService variables = new HashMap<>(); //根据业务sid查询排产信息 BaseDistributorApply baseDistributorApply = fetchBySid(query.getBusinessSid()); - boolean isDecide = true; - //去查询是否同意 - if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) { - if (baseDistributorApply.getAgree().equals("0")) { - isDecide = false; - } - } - variables.put("isDecide", isDecide); +// boolean isDecide = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) { +// if (baseDistributorApply.getAgree().equals("0")) { +// isDecide = false; +// } +// } +// variables.put("isDecide", isDecide); bv.setFormVariables(variables); bv.setModelId(baseDistributorApply.getProcDefId()); ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); @@ -1215,14 +1235,14 @@ public class BaseDistributorApplyService extends MybatisBaseService variables = new HashMap<>(); //根据业务sid查询排产信息 BaseDistributorApply baseDistributorApply = fetchBySid(query.getBusinessSid()); - boolean isDecide = true; - //去查询是否同意 - if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) { - if (baseDistributorApply.getAgree().equals("0")) { - isDecide = false; - } - } - variables.put("isDecide", isDecide); +// boolean isDecide = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(baseDistributorApply.getAgree())) { +// if (baseDistributorApply.getAgree().equals("0")) { +// isDecide = false; +// } +// } +// variables.put("isDecide", isDecide); bv.setFormVariables(variables); bv.setModelId(baseDistributorApply.getProcDefId()); ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); @@ -1289,8 +1309,8 @@ public class BaseDistributorApplyService extends MybatisBaseService variables = BeanUtil.beanToMap(dto); Map appMap = new HashMap<>(); //若有网关,则赋值网关中判断的字段。 - boolean isDecide = true; - //去查询是否同意 - if (StringUtils.isNotBlank(entity.getAgree())) { - if (entity.getAgree().equals("0")) { - isDecide = false; - } - } - variables.put("isDecide", isDecide); +// boolean isDecide = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(entity.getAgree())) { +// if (entity.getAgree().equals("0")) { +// isDecide = false; +// } +// } +// variables.put("isDecide", isDecide); variables.put("businessSid", businessSid); appMap.put("sid", businessSid); variables.put("app", appMap); @@ -1965,7 +2002,11 @@ public class BaseDistributorApplyService extends MybatisBaseService files = new ArrayList<>(); + @ApiModelProperty("消贷金融方案") + private SolutionsVo solutions = new SolutionsVo(); + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("实例id") + private String instanceId; + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeDto.java new file mode 100644 index 0000000000..7e6e129436 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeDto.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/10/16 14:30 + */ +@Data +public class BusSolutionsChangeDto implements Dto { + + private String sid; + private String userSid; + private String orgPath; + private String salesOrderSid; + @ApiModelProperty("变更前金融方案sid") + private String solutionsSid; + @ApiModelProperty("申请日期") + private Date applyDate; + @ApiModelProperty("申请人") + private String applyName; + @ApiModelProperty("申请部门sid") + private String deptSid; + @ApiModelProperty("申请部门") + private String dept; + @ApiModelProperty("挂靠公司名称") + private String affiliatedCompany; + private String remarks; + @ApiModelProperty("客户联系方式") + private String mobile; + @ApiModelProperty("客户地址") + private String address; + @ApiModelProperty(value = "合同编号") + private String contractNo; + @ApiModelProperty(value = "客户名称") + private String customerName; + private List files = new ArrayList<>(); + @ApiModelProperty("消贷金融方案") + private SolutionsDto solutions = new SolutionsDto(); + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeFeign.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeFeign.java new file mode 100644 index 0000000000..7749ccc469 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeFeign.java @@ -0,0 +1,148 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.api.bussolutionschange; + + +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionChangeVo; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionssChangeDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSubmitSolutionDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.flow.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "金融方案变更申请") +@FeignClient( + contextId = "anrui-buscenter-BusSolutionsChange", + name = "anrui-buscenter", + path = "v1/bussolutionschange", + fallback = BusSolutionsChangeFeignFallback.class) +public interface BusSolutionsChangeFeign { + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("变更初始化") + @GetMapping("/changeInit") + @ResponseBody + public ResultBean changeInit(@RequestParam("salesOrderSid") String salesOrderSid, @RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath); + + + @ApiOperation("详情、编辑回显") + @GetMapping("/details") + @ResponseBody + public ResultBean details(@RequestParam("sid") String sid); + + @ApiOperation("保存修改") + @PostMapping("/saveSolutions") + @ResponseBody + public ResultBean saveSolutions(@RequestBody BusSolutionsChangeDto dto); + + @ApiOperation("批量删除") + @DeleteMapping("/deleteBySids") + @ResponseBody + public ResultBean deleteBySids(@RequestBody String[] sids); + + //-----------------------流程---------------------------- + @ApiOperation("提交") + @PostMapping("/submit") + public ResultBean submitRecordApplication(@RequestBody @Valid SubmitSolutionsChangeDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody SolutionsChangeCompleteDto dto); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody SolutionsChangeTaskQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody SolutionsChangeTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@RequestBody SolutionsChangeTaskQuery query); + + @ApiOperation(value = "流程历史流转记录") + @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}") + public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap SolutionsGetNodeQuery query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap SolutionsGetNodeQuery query); + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody SolutionsChangeDelegateQuery query); + + //---------------------app-------------------------------------------------------------- + + @ApiOperation("变更初始化") + @GetMapping("/solutionsInit") + @ResponseBody + public ResultBean solutionsInit(@RequestParam("orderSid") String orderSid, @RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath); + + @ApiOperation("保存修改") + @PostMapping("/saveAppSolutions") + @ResponseBody + public ResultBean saveAppSolutions(@RequestBody AppSolutionssChangeDto dto); + + @ApiOperation("详情、编辑回显") + @GetMapping("/appDetails/{sid}") + @ResponseBody + public ResultBean appDetails(@PathVariable("sid") String sid); + + @ApiOperation("移动端-删除") + @DeleteMapping("/deleteSolution/{sid}") + @ResponseBody + ResultBean deleteSolution(@PathVariable("sid") String sid); + + @ApiOperation("移动端-欠款客户备案提交") + @PostMapping("/submitAppSolution") + public ResultBean submitAppSolution(@RequestBody @Valid AppSubmitSolutionDto dto); + + +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeFeignFallback.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeFeignFallback.java new file mode 100644 index 0000000000..36acbf18ad --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeFeignFallback.java @@ -0,0 +1,116 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange; + +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionChangeVo; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionssChangeDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSubmitSolutionDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.flow.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/10/16 9:39 + */ +@Component +public class BusSolutionsChangeFeignFallback implements BusSolutionsChangeFeign { + @Override + public ResultBean> listPage(PagerQuery pq) { + return null; + } + + @Override + public ResultBean changeInit(String salesOrder, String userSid, String orgPath) { + return null; + } + + @Override + public ResultBean details(String sid) { + return null; + } + + + @Override + public ResultBean saveSolutions(BusSolutionsChangeDto dto) { + return null; + } + + @Override + public ResultBean deleteBySids(String[] sids) { + return null; + } + + @Override + public ResultBean submitRecordApplication(SubmitSolutionsChangeDto dto) { + return null; + } + + @Override + public ResultBean complete(SolutionsChangeCompleteDto dto) { + return null; + } + + @Override + public ResultBean revokeProcess(SolutionsChangeTaskQuery query) { + return null; + } + + @Override + public ResultBean taskReject(SolutionsChangeTaskQuery query) { + return null; + } + + @Override + public ResultBean breakProcess(SolutionsChangeTaskQuery query) { + return null; + } + + @Override + public ResultBean flowRecord(String procInsId) { + return null; + } + + @Override + public ResultBean> getNextNodesForSubmit(SolutionsGetNodeQuery query) { + return null; + } + + @Override + public ResultBean> getPreviousNodesForReject(SolutionsGetNodeQuery query) { + return null; + } + + @Override + public ResultBean delegate(SolutionsChangeDelegateQuery query) { + return null; + } + + @Override + public ResultBean solutionsInit(String orderSid, String userSid, String orgPath) { + return null; + } + + @Override + public ResultBean saveAppSolutions(AppSolutionssChangeDto dto) { + return null; + } + + @Override + public ResultBean appDetails(String sid) { + return null; + } + + @Override + public ResultBean deleteSolution(String sid) { + return null; + } + + @Override + public ResultBean submitAppSolution(AppSubmitSolutionDto dto) { + return null; + } +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeQuery.java new file mode 100644 index 0000000000..c1fd7df131 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeQuery.java @@ -0,0 +1,42 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/10/16 9:50 + */ +@Data +public class BusSolutionsChangeQuery implements Query { + + @ApiModelProperty("分公司") + private String company; // 使用组织名称 + @ApiModelProperty("申请人") + private String applyName; // 申请人 + @ApiModelProperty("申请部门") + private String dept; + @ApiModelProperty("申请开始日期") + private String applyStartDate; // 申请日期 + @ApiModelProperty("申请结束日期") + private String applyEndDate; // 申请日期 + @ApiModelProperty("客户名称") + private String customerName; + @ApiModelProperty("车型") + private String model; + @ApiModelProperty("产品政策") + private String policyName; + @ApiModelProperty(value = "合同编号") + private String contractNo; + @ApiModelProperty("组织全路径") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("菜单url") + private String menuUrl; + @ApiModelProperty("用户sid") + private String userSid; + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeVo.java new file mode 100644 index 0000000000..1949133eee --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/BusSolutionsChangeVo.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Administrator + * @description + * @date 2023/10/16 9:50 + */ +@Data +public class BusSolutionsChangeVo implements Vo { + private String sid; + @ApiModelProperty("申请人") + private String applyName; // 申请人 + @ApiModelProperty("申请日期") + private String applyDate; // 申请日期 + @ApiModelProperty("申请部门") + private String dept; + @ApiModelProperty("车型") + private String model; + @ApiModelProperty("产品政策") + private String policyName; + @ApiModelProperty("挂靠公司名称") + private String affiliatedCompany; + @ApiModelProperty(value = "客户名称") + private String customerName; + @ApiModelProperty(value = "合同编号") + private String contractNo; + @ApiModelProperty("融资项目总额") + private BigDecimal loanTotal; + @ApiModelProperty("分公司") + private String company; // 使用组织名称 + @ApiModelProperty("流程定义的id") + private String procDefId; // 流程定义的id + @ApiModelProperty("流程实例的sid") + private String procInstId; // 流程实例的sid + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/SolutionsDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/SolutionsDto.java new file mode 100644 index 0000000000..e39364ccad --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/SolutionsDto.java @@ -0,0 +1,167 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange; + +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; + +/** + * @author Administrator + * @description + * @date 2023/10/16 14:25 + */ +@Data +public class SolutionsDto implements Dto { + @JsonProperty("isShowMore") + private boolean isShowMore; + /**************************金融方案主表****************************/ + @ApiModelProperty("关联sid") + private String busSid; + @ApiModelProperty("是否打包:1是0否") + private String isPack; + @ApiModelProperty("产品政策名称") + private String policyName; + @ApiModelProperty("产品政策sid") + private String policySid; + @ApiModelProperty("主车发票价") + private String mainVehicleAmount; + @ApiModelProperty("融资票据") + private String accessoriesAmount; + @ApiModelProperty("是否有融资票据") + private boolean accessoriesAmountCb; + @ApiModelProperty("挂车金额") + private String trailerAmount; + @ApiModelProperty("是否有挂车") + private boolean trailerAmountCb; + @ApiModelProperty("保险金额") + private String premium; + @ApiModelProperty("是否有保险") + private boolean premiumCb; + @ApiModelProperty("购置税") + private String purchaseTax; + @ApiModelProperty("是否有购置税") + private boolean purchaseTaxCb; + @ApiModelProperty("融资项目总额") + private String loanTotal; + @ApiModelProperty("首付款比例") + private String downPayRatio; + @ApiModelProperty("首付金额") + @NotBlank(message = "首付金额不能为空") + private String downPayAmount; + @ApiModelProperty("贷款金额") + private String loanAmount; + @ApiModelProperty("贷款期数") + @NotBlank(message = "产品期数不能为空") + private String loanPeriod; + @ApiModelProperty("贷款保证金比例") + private String bondRatio; + @ApiModelProperty("贷款保证金金额") + @NotBlank(message = "贷款保证金不能为空") + private String bondAmount; + @ApiModelProperty("厂家贴息") + @NotBlank(message = "厂家贴息不能为空") + private String factoryDiscount; + @ApiModelProperty("厂家贴息用途") + private String factoryDiscountUse; + @ApiModelProperty("厂家贴息用途") + private String factoryDiscountUseKey; + @ApiModelProperty("年利率") + private String policyYearRatio; + @ApiModelProperty("月还金额") + @NotBlank(message = "月还金额不能为空") + private String loanPayMoney; + @ApiModelProperty("利息总额") + private String loanInterest; + @ApiModelProperty("是否勾选其它融") + private boolean otherPolicyState; + + @ApiModelProperty("贴息抵车款") + private String discountCar; + + /*************************其他融和方案汇总*********************************/ + @ApiModelProperty("其它融名称") + private String otherPolicyName; + @ApiModelProperty("其它融贷款金额") + private String otherPolicyAmount; + @ApiModelProperty("其它融期数") + private String otherPolicyPeriod; + @ApiModelProperty("其它融月还") + private String otherPolicyMonthlyRepay; + @ApiModelProperty("其它融利息总额") + private String otherPolicyInterest; + @ApiModelProperty("其它融年利率") + private String otherPolicyYearRatio; + private String otherPolicySid; + @ApiModelProperty("其他融贴息") + private String otherDiscount; + + + @ApiModelProperty("'融资首付") + private String loanDownPay; + @ApiModelProperty("实际首付比例") + private String downPayAmountsRatio; + @ApiModelProperty("总贷款金额") + private String loanAmountTotal; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("月还金额") + private String monthlyRepay; + @ApiModelProperty("利息总额") + private String interest; + @ApiModelProperty("预计首期还款日") + private String returnTime; + + + /*********************************金融方案费用明细*****************************/ + + @ApiModelProperty("融资首付") + private String downPayAmounts; + @ApiModelProperty("贷款保证金") + private String bondAmounts; + @ApiModelProperty("保险保证金") + private String depositPremium; + @ApiModelProperty("落户保证金") + private String depositSettle; + @ApiModelProperty("服务费") + @NotBlank(message = "服务费不能为空") + private String serviceAmount; + @ApiModelProperty("代收意外险") + private String proxyAccidentPremium; + @ApiModelProperty("上牌费") + private String registerAmount; + @ApiModelProperty("运管费") + private String operationAmount; + @ApiModelProperty("补车价") + private String vehOtherPrice; + @ApiModelProperty("其它费用") + private String otherAmount; + @ApiModelProperty("其它费用说明") + private String otherAmountRemark; + @ApiModelProperty("办理方式选择") + private String dealWay; + @ApiModelProperty("办理方式选择key") + private String dealWayKey; + @ApiModelProperty("代收合计") + private String proxyTotal; + @ApiModelProperty("代收首年保险费") + private String proxyPremium; + @ApiModelProperty("代收购置费") + private String proxyPurchasetax; + @ApiModelProperty("抵顶首年保险费") + private String offsetPremium; + @ApiModelProperty("抵顶购置税") + private String offsetPurchasetax; + @ApiModelProperty("抵顶费用合计") + private String offsetTotal; + @ApiModelProperty("应收合计") + private String receivableTotal; + @ApiModelProperty("实收合计") + private String realTotal; + @ApiModelProperty("车辆总价") + private String vehTotalPrice; + @ApiModelProperty("名义留购价") + private String nominalPrice; + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/SolutionsVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/SolutionsVo.java new file mode 100644 index 0000000000..c696441dc7 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/SolutionsVo.java @@ -0,0 +1,156 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/10/16 10:40 + */ +@Data +public class SolutionsVo implements Vo { + @ApiModelProperty("关联表sid") + private String salesOrderSid; + + //金融方案主表 + private String isPack; + @ApiModelProperty("产品政策名称") + private String policyName; + @ApiModelProperty("产品政策sid") + private String policySid; + @ApiModelProperty("融资项目总额") + private String loanTotal; + @ApiModelProperty("主车发票价") + private String mainVehicleAmount; + @ApiModelProperty("融资票据") + private String accessoriesAmount; + @ApiModelProperty("挂车金额") + private String trailerAmount; + @ApiModelProperty("购置税") + private String purchaseTax; + @ApiModelProperty("保险金额") + private String premium; + @ApiModelProperty("首付款比例") + private String downPayRatio; + @ApiModelProperty("首付金额") + private String downPayAmount; + @ApiModelProperty("贷款金额") + private String loanAmount; + @ApiModelProperty("贷款期数") + private String loanPeriod; + @ApiModelProperty("保证金比例") + private String bondRatio; + @ApiModelProperty("保证金金额") + private String bondAmount; + @ApiModelProperty("厂家贴息") + private String factoryDiscount; + @ApiModelProperty("厂家贴息用途") + private String factoryDiscountUse; + @ApiModelProperty("年利率") + private String policyYearRatio; + @ApiModelProperty("贷款月还") + private String loanPayMoney; + @ApiModelProperty("贷款利息") + private String loanInterest; + @ApiModelProperty("是否有融资票据") + private boolean accessoriesAmountCb; + @ApiModelProperty("是否有挂车") + private boolean trailerAmountCb; + @ApiModelProperty("是否有购置税") + private boolean purchaseTaxCb; + @ApiModelProperty("是否有保险") + private boolean premiumCb; + @ApiModelProperty("是否勾选其它融") + private boolean otherPolicyState; + + //===========================其他融 + + @ApiModelProperty("其它融名称") + private String otherPolicyName; + private String otherPolicySid; + @ApiModelProperty("其它融金额") + private String otherPolicyAmount; + @ApiModelProperty("其它融期数") + private String otherPolicyPeriod; + @ApiModelProperty("其它融月还") + private String otherPolicyMonthlyRepay; + @ApiModelProperty("其它融利息总额") + private String otherPolicyInterest; + @ApiModelProperty("其它融年利率") + private String otherPolicyYearRatio; + @ApiModelProperty("其他融贴息") + private String otherDiscount; + + @ApiModelProperty("'融资首付") + private String loanDownPay; + @ApiModelProperty("总贷款金额") + private String loanAmountTotal; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("月还金额") + private String monthlyRepay; + @ApiModelProperty("利息总额") + private String interest; + @ApiModelProperty("预计首期还款日") + private String returnTime; + + + //=====================金融方案费用明细 + + @ApiModelProperty("融资首付") + private String downPayAmounts; + @ApiModelProperty("贷款保证金") + private String bondAmounts; + @ApiModelProperty("保险保证金") + private String depositPremium; + @ApiModelProperty("落户保证金") + private String depositSettle; + @ApiModelProperty("服务费") + private String serviceAmount; + @ApiModelProperty("代收意外险") + private String proxyAccidentPremium; + @ApiModelProperty("上牌费") + private String registerAmount; + @ApiModelProperty("运管费") + private String operationAmount; + @ApiModelProperty("补车价") + private String vehOtherPrice; + @ApiModelProperty("其它费用") + private String otherAmount; + @ApiModelProperty("其它费用说明") + private String otherAmountRemark; + @ApiModelProperty("办理方式选择") + private String dealWay; + @ApiModelProperty("办理方式选择key") + private String dealWayKey; + @ApiModelProperty("代收合计") + private String proxyTotal; + @ApiModelProperty("代收首年保险费") + private String proxyPremium; + @ApiModelProperty("代收购置费") + private String proxyPurchasetax; + @ApiModelProperty("抵顶首年保险费") + private String offsetPremium; + @ApiModelProperty("抵顶购置税") + private String offsetPurchasetax; + @ApiModelProperty("抵顶费用合计") + private String offsetTotal; + @ApiModelProperty("应收合计") + private String receivableTotal; + @ApiModelProperty("实收合计") + private String realTotal; + @ApiModelProperty("车辆总价") + private String vehTotalPrice; + @ApiModelProperty("名义留购价") + private String nominalPrice; + + @ApiModelProperty("实际首付比例") + private String downPayAmountsRatio; + + @ApiModelProperty("服务费类型") + private String serviceChargeTypeKey; + @ApiModelProperty("服务费") + private String serviceChargeTypeValue; +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppOrderSolutionChangeListVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppOrderSolutionChangeListVo.java new file mode 100644 index 0000000000..73721ccf9e --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppOrderSolutionChangeListVo.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.app; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/10/20 14:06 + */ +@Data +public class AppOrderSolutionChangeListVo { + @ApiModelProperty(value = "内容") + private String value; + + @ApiModelProperty(value = "单元格大小") + private Integer spanSize; + + @ApiModelProperty("类型:0 最普通的 1 标题的 2是 加上划线的") + private Integer type; + @ApiModelProperty("是否加粗,true是,false否") + private boolean bold; +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSolutionChangeVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSolutionChangeVo.java new file mode 100644 index 0000000000..2692415bf6 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSolutionChangeVo.java @@ -0,0 +1,242 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.app; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/10/20 14:05 + */ +@Data +public class AppSolutionChangeVo { + + private String publishInfo; + private String taskId; + private String procInsId; + private String sid; + private String userSid; + private String orgPath; + private String orderSid; +// @ApiModelProperty("变更前金融方案sid") +// private String solutionsSid; + @ApiModelProperty("申请日期") + private String applyDate; + @ApiModelProperty("申请人") + private String applyName; + @ApiModelProperty("申请部门sid") + private String deptSid; + @ApiModelProperty("申请部门") + private String dept; + @ApiModelProperty("挂靠公司名称") + private String affiliatedCompany; + private String remarks; + @ApiModelProperty("客户联系方式") + private String mobile; + @ApiModelProperty("客户地址") + private String address; + @ApiModelProperty(value = "合同编号") + private String contractNo; + @ApiModelProperty(value = "客户名称") + private String customerName; + private List files = new ArrayList<>(); + private boolean appendPolicySid; + + + + /* @ApiModelProperty("是否是三方金融") + private boolean finPlanState;*/ + @JsonProperty("isShowMore") + private boolean isShowMore; + + @ApiModelProperty("销售订单sid") + @JsonProperty("saleOrderSid") + private String busSid; + // private String saleOrderSid; +/* @ApiModelProperty("类型:1自营非担保,2外部金融") + private String type; + private String typeKey;*/ + @ApiModelProperty("是否打包,0不打包,1打包") + private String isPack; + @ApiModelProperty("产品政策名称") + private String policyName; + @ApiModelProperty("产品政策sid") + private String policySid; + @ApiModelProperty("主车发票价") + @JsonSerialize(using = ToStringSerializer.class) + private String mainVehicleAmount; + @ApiModelProperty("融资票据") + @JsonSerialize(using = ToStringSerializer.class) + private String accessoriesAmount; + @ApiModelProperty("挂车金额") + @JsonSerialize(using = ToStringSerializer.class) + private String trailerAmount; + @ApiModelProperty("购置税") + @JsonSerialize(using = ToStringSerializer.class) + private String purchaseTax; + @ApiModelProperty("保险金额") + @JsonSerialize(using = ToStringSerializer.class) + private String premium; + @ApiModelProperty("融资项目总额") + @JsonSerialize(using = ToStringSerializer.class) + private String loanTotal; + + @ApiModelProperty("是否有融资票据") + private boolean accessoriesAmountCb; + @ApiModelProperty("是否有挂车") + private boolean trailerAmountCb; + @ApiModelProperty("是否有购置税") + private boolean purchaseTaxCb; + @ApiModelProperty("是否有保险") + private boolean premiumCb; + @ApiModelProperty("是否勾选其它融") + private boolean otherPolicyState; + + @ApiModelProperty("首付款比例") + private String downPayRatio; + @ApiModelProperty("首付金额") + @JsonSerialize(using = ToStringSerializer.class) + private String downPayAmount; + @ApiModelProperty("贷款金额") + @JsonSerialize(using = ToStringSerializer.class) + private String loanAmount; + @ApiModelProperty("贷款期数") + private String loanPeriod; + @ApiModelProperty("贷款保证金比例") + private String bondRatio; + @ApiModelProperty("贷款保证金金额") + @JsonSerialize(using = ToStringSerializer.class) + private String bondAmount; + @ApiModelProperty("厂家贴息") + @JsonSerialize(using = ToStringSerializer.class) + private String factoryDiscount; + private String factoryDiscountUse; + @ApiModelProperty("年利率") + private String policyYearRatio; + @ApiModelProperty("月还金额") + @JsonSerialize(using = ToStringSerializer.class) + private String loanPayMoney; + @ApiModelProperty("利息总额") + @JsonSerialize(using = ToStringSerializer.class) + private String loanInterest; + @ApiModelProperty("贴息抵车款") + @JsonProperty("factoryDiscountUseMoney") + private String discountCar; + + //其他融 + + @ApiModelProperty("其它融名称") + private String otherPolicyName; + @ApiModelProperty("其他融sid") + private String otherPolicySid; + @ApiModelProperty("其它融贷款金额") + @JsonSerialize(using = ToStringSerializer.class) + private String otherPolicyAmount; + @ApiModelProperty("其它融期数") + private String otherPolicyPeriod; + @ApiModelProperty("其它融月还") + @JsonSerialize(using = ToStringSerializer.class) + private String otherPolicyMonthlyRepay; + @ApiModelProperty("其它融利息总额") + @JsonSerialize(using = ToStringSerializer.class) + private String otherPolicyInterest; + @ApiModelProperty("其它融年利率") + private String otherPolicyYearRatio; + + private boolean otherPolicyIsMain; + @ApiModelProperty("其他融贴息") + private String otherDiscount; + + @ApiModelProperty("'融资首付") + @JsonSerialize(using = ToStringSerializer.class) + private String loanDownPay; + @ApiModelProperty("实际首付比例") + private String downPayAmountsRatio; + @ApiModelProperty("总贷款金额") + @JsonSerialize(using = ToStringSerializer.class) + private String loanAmountTotal; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("月还金额") + private String monthlyRepay; + @ApiModelProperty("利息总额") + @JsonSerialize(using = ToStringSerializer.class) + private String interest; + @ApiModelProperty("预计首期还款日") + private String returnTime; + + //金融方案费用明细 + + @ApiModelProperty("融资首付") + private String downPayAmounts; + @ApiModelProperty("贷款保证金") + private String bondAmounts; + @ApiModelProperty("保险保证金") + private String depositPremium; + @ApiModelProperty("落户保证金") + private String depositSettle; + @ApiModelProperty("服务费") + private String serviceAmount; + @ApiModelProperty("代收意外险") + private String proxyAccidentPremium; + @ApiModelProperty("上牌费") + private String registerAmount; + @ApiModelProperty("运管费") + private String operationAmount; + @ApiModelProperty("补车价") + private String vehOtherPrice; + @ApiModelProperty("其它费用") + private String otherAmount; + @ApiModelProperty("其它费用说明") + private String otherAmountRemark; + @ApiModelProperty("办理方式选择") + private String dealWay; + @ApiModelProperty("办理方式选择key") + private String dealWayKey; + @ApiModelProperty("代收合计") + private String proxyTotal; + @ApiModelProperty("代收首年保险费") + private String proxyPremium; + @ApiModelProperty("代收购置费") + private String proxyPurchasetax; + @ApiModelProperty("抵顶首年保险费") + private String offsetPremium; + @ApiModelProperty("抵顶购置税") + private String offsetPurchasetax; + @ApiModelProperty("抵顶费用合计") + @JsonSerialize(using = ToStringSerializer.class) + private String offsetTotal; + @ApiModelProperty("应收合计") + @JsonSerialize(using = ToStringSerializer.class) + private String receivableTotal; + @ApiModelProperty("实收合计") + @JsonSerialize(using = ToStringSerializer.class) + private String realTotal; + @ApiModelProperty("车辆总价") + @JsonSerialize(using = ToStringSerializer.class) + private String vehTotalPrice; + @ApiModelProperty("名义留购价") + @JsonSerialize(using = ToStringSerializer.class) + private String nominalPrice; + + @ApiModelProperty("单台成交价") + private String finalPrice; + @ApiModelProperty("挂车价格") + private String gcPrice; + @ApiModelProperty("上装成交价") + private String szPrice; + + @ApiModelProperty("拼接的List") + private List financeForms = new ArrayList<>(); + + private String serviceChargeTypeKey; + private String serviceChargeTypeValue; + + private String modelSid; +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSolutionssChangeDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSolutionssChangeDto.java new file mode 100644 index 0000000000..a45608513f --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSolutionssChangeDto.java @@ -0,0 +1,199 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.app; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/10/20 14:07 + */ +@Data +public class AppSolutionssChangeDto { + + + private String sid; + private String userSid; + private String orgPath; + private String orderSid; + // @ApiModelProperty("变更前金融方案sid") + // private String solutionsSid; + @ApiModelProperty("申请日期") + private String applyDate; + @ApiModelProperty("申请人") + private String applyName; + @ApiModelProperty("申请部门sid") + private String deptSid; + @ApiModelProperty("申请部门") + private String dept; + @ApiModelProperty("挂靠公司名称") + private String affiliatedCompany; + private String remarks; + @ApiModelProperty("客户联系方式") + private String mobile; + @ApiModelProperty("客户地址") + private String address; + @ApiModelProperty(value = "合同编号") + private String contractNo; + @ApiModelProperty(value = "客户名称") + private String customerName; + private List files = new ArrayList<>(); + private boolean appendPolicySid; + + @ApiModelProperty("展示更多") + @JsonProperty("isShowMore") + private boolean isShowMore; + @ApiModelProperty("关联sid") + @JsonProperty("saleOrderSid") + private String saleOrderSid; + @ApiModelProperty("是否打包:1是0否") + private String isPack; + @ApiModelProperty("产品政策名称") + private String policyName; + @ApiModelProperty("产品政策sid") + private String policySid; + @ApiModelProperty("主车发票价") + private String mainVehicleAmount; + @ApiModelProperty("融资票据") + private String accessoriesAmount; + @ApiModelProperty("是否有融资票据") + private boolean accessoriesAmountCb; + @ApiModelProperty("挂车金额") + private String trailerAmount; + @ApiModelProperty("是否有挂车") + private boolean trailerAmountCb; + @ApiModelProperty("保险金额") + private String premium; + @ApiModelProperty("是否有保险") + private boolean premiumCb; + @ApiModelProperty("购置税") + private String purchaseTax; + @ApiModelProperty("是否有购置税") + private boolean purchaseTaxCb; + @ApiModelProperty("融资项目总额") + private String loanTotal; + @ApiModelProperty("首付款比例") + private String downPayRatio; + @ApiModelProperty("首付金额") + @NotBlank(message = "首付金额不能为空") + private String downPayAmount; + @ApiModelProperty("贷款金额") + private String loanAmount; + @ApiModelProperty("贷款期数") + @NotBlank(message = "产品期数不能为空") + private String loanPeriod; + @ApiModelProperty("贷款保证金比例") + private String bondRatio; + @ApiModelProperty("贷款保证金金额") + @NotBlank(message = "贷款保证金不能为空") + private String bondAmount; + @ApiModelProperty("厂家贴息") + @NotBlank(message = "厂家贴息不能为空") + private String factoryDiscount; + @ApiModelProperty("厂家贴息用途") + private String factoryDiscountUse; + @ApiModelProperty("厂家贴息用途") + private String factoryDiscountUseKey; + @ApiModelProperty("年利率") + private String policyYearRatio; + @ApiModelProperty("月还金额") + @NotBlank(message = "月还金额不能为空") + private String loanPayMoney; + @ApiModelProperty("利息总额") + private String loanInterest; + @ApiModelProperty("是否勾选其它融") + private boolean otherPolicyState; + + @ApiModelProperty("贴息抵车款") + @JsonProperty("factoryDiscountUseMoney") + private String discountCar; + + /*************************其他融和方案汇总*********************************/ + @ApiModelProperty("其它融名称") + private String otherPolicyName; + @ApiModelProperty("其他融sid") + private String otherPolicySid; + @ApiModelProperty("其它融贷款金额") + private String otherPolicyAmount; + @ApiModelProperty("其它融期数") + private String otherPolicyPeriod; + @ApiModelProperty("其它融月还") + private String otherPolicyMonthlyRepay; + @ApiModelProperty("其它融利息总额") + private String otherPolicyInterest; + @ApiModelProperty("其它融年利率") + private String otherPolicyYearRatio; + @ApiModelProperty("其他融贴息") + private String otherDiscount; + + @ApiModelProperty("'融资首付") + private String loanDownPay; + @ApiModelProperty("实际首付比例") + private String downPayAmountsRatio; + @ApiModelProperty("总贷款金额") + private String loanAmountTotal; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("月还金额") + private String monthlyRepay; + @ApiModelProperty("利息总额") + private String interest; + @ApiModelProperty("预计首期还款日") + private String returnTime; + + + /*********************************金融方案费用明细*****************************/ + + @ApiModelProperty("融资首付") + private String downPayAmounts; + @ApiModelProperty("贷款保证金") + private String bondAmounts; + @ApiModelProperty("保险保证金") + private String depositPremium; + @ApiModelProperty("落户保证金") + private String depositSettle; + @ApiModelProperty("服务费") + @NotBlank(message = "服务费不能为空") + private String serviceAmount; + @ApiModelProperty("代收意外险") + private String proxyAccidentPremium; + @ApiModelProperty("上牌费") + private String registerAmount; + @ApiModelProperty("运管费") + private String operationAmount; + @ApiModelProperty("补车价") + private String vehOtherPrice; + @ApiModelProperty("其它费用") + private String otherAmount; + @ApiModelProperty("其它费用说明") + private String otherAmountRemark; + @ApiModelProperty("办理方式选择") + private String dealWay; + @ApiModelProperty("办理方式选择key") + private String dealWayKey; + @ApiModelProperty("代收合计") + private String proxyTotal; + @ApiModelProperty("代收首年保险费") + private String proxyPremium; + @ApiModelProperty("代收购置费") + private String proxyPurchasetax; + @ApiModelProperty("抵顶首年保险费") + private String offsetPremium; + @ApiModelProperty("抵顶购置税") + private String offsetPurchasetax; + @ApiModelProperty("抵顶费用合计") + private String offsetTotal; + @ApiModelProperty("应收合计") + private String receivableTotal; + @ApiModelProperty("实收合计") + private String realTotal; + @ApiModelProperty("车辆总价") + private String vehTotalPrice; + @ApiModelProperty("名义留购价") + private String nominalPrice; +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSubmitSolutionDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSubmitSolutionDto.java new file mode 100644 index 0000000000..a1edd37ec8 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/app/AppSubmitSolutionDto.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.app; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/10/20 16:38 + */ +@Data +public class AppSubmitSolutionDto extends AppSolutionssChangeDto { + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("流程实例id") + @JsonProperty("procInsId") + private String instanceId; +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeCompleteDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeCompleteDto.java new file mode 100644 index 0000000000..42e8329a8d --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeCompleteDto.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.flow.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 SolutionsChangeCompleteDto 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 formVariables; + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeDelegateQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeDelegateQuery.java new file mode 100644 index 0000000000..a641180eb3 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.flow.flow; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class SolutionsChangeDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") +// @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; + + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeTaskQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeTaskQuery.java new file mode 100644 index 0000000000..f1a518b557 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsChangeTaskQuery.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.flow.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 SolutionsChangeTaskQuery 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 values = new HashMap<>(); + @ApiModelProperty("审批人") + private String assignee; + @ApiModelProperty("候选人") + private List candidateUsers = new ArrayList<>(); + @ApiModelProperty("审批组") + private List candidateGroups = new ArrayList<>();*/ +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsGetNodeQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsGetNodeQuery.java new file mode 100644 index 0000000000..8f311cbd0b --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsGetNodeQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.flow.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 SolutionsGetNodeQuery implements Query { + private static final long serialVersionUID = -5674867230708197611L; + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + + @ApiModelProperty(value = "分支字段及业务字段") + private Map formVariables; + +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsGetNodeVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsGetNodeVo.java new file mode 100644 index 0000000000..aa6404755d --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SolutionsGetNodeVo.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.flow.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 SolutionsGetNodeVo implements Vo { + private static final long serialVersionUID = 8802774014747063504L; + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SubmitSolutionsChangeDto.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SubmitSolutionsChangeDto.java new file mode 100644 index 0000000000..cf72788497 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussolutionschange/flow/flow/SubmitSolutionsChangeDto.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.buscenter.api.bussolutionschange.flow.flow; + +import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChangeDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author fzz + * @Date 2022/6/27 13:38 + * @Description + */ +@Data +public class SubmitSolutionsChangeDto extends BusSolutionsChangeDto { + private static final long serialVersionUID = 378585162071125756L; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeMapper.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeMapper.java new file mode 100644 index 0000000000..cefc6ceb2b --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeMapper.java @@ -0,0 +1,55 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.bussolutionschange; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChange; +import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChangeVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +/** + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface BusSolutionsChangeMapper extends BaseMapper { + + + IPage listPage(IPage page,@Param(Constants.WRAPPER) QueryWrapper qw); + + int updateFlowFiled(Map map); +} \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeMapper.xml new file mode 100644 index 0000000000..1388966eb0 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeMapper.xml @@ -0,0 +1,43 @@ + + + + + UPDATE bus_solutions_change + SET nodeState=#{nodeState} + , nodeSid=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid = #{sid} + + + + + + \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeRest.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeRest.java new file mode 100644 index 0000000000..227d338f06 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeRest.java @@ -0,0 +1,166 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.bussolutionschange; + + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.buscenter.api.bussolutionschange.*; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionChangeVo; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionssChangeDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSubmitSolutionDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.flow.flow.*; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "金融方案变更") +@RestController("com.yxt.anrui.buscenter.biz.bussolutionschange.BusSolutionsChangeRest") +@RequestMapping("v1/bussolutionschange") +public class BusSolutionsChangeRest implements BusSolutionsChangeFeign { + + + @Autowired + private BusSolutionsChangeService busSolutionsChangeService; + + + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = busSolutionsChangeService.listPage(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean changeInit(String salesOrderSid, String userSid, String orgPath) { + return busSolutionsChangeService.changeInit(salesOrderSid, userSid, orgPath); + } + + @Override + public ResultBean details(String sid) { + return busSolutionsChangeService.details(sid); + } + + @Override + public ResultBean saveSolutions(BusSolutionsChangeDto dto) { + return busSolutionsChangeService.saveSolutions(dto); + } + + @Override + public ResultBean deleteBySids(String[] sids) { + return busSolutionsChangeService.deleteBySids(sids); + } + + @Override + public ResultBean submitRecordApplication(SubmitSolutionsChangeDto dto) { + return busSolutionsChangeService.submitRecordApplication(dto); + } + + @Override + public ResultBean complete(SolutionsChangeCompleteDto dto) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(dto, bv); + bv.setModelId(ProcDefEnum.BUSSOLUTIONSCHANGE.getProDefId()); + return busSolutionsChangeService.complete(bv); + } + + + @Override + public ResultBean revokeProcess(SolutionsChangeTaskQuery query) { + return busSolutionsChangeService.revokeProcess(query); + } + + @Override + public ResultBean taskReject(SolutionsChangeTaskQuery query) { + + return busSolutionsChangeService.taskReject(query); + } + + @Override + public ResultBean breakProcess(SolutionsChangeTaskQuery query) { + return busSolutionsChangeService.breakProcess(query); + } + + @Override + public ResultBean flowRecord(String procInsId) { + + return busSolutionsChangeService.flowRecord(procInsId); + } + + @Override + public ResultBean> getNextNodesForSubmit(SolutionsGetNodeQuery query) { + return busSolutionsChangeService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean> getPreviousNodesForReject(SolutionsGetNodeQuery query) { + return busSolutionsChangeService.getNextNodesForSubmit(query); + } + + + @Override + public ResultBean delegate(SolutionsChangeDelegateQuery query) { + return busSolutionsChangeService.delegate(query); + } + + @Override + public ResultBean solutionsInit(String orderSid, String userSid, String orgPath) { + return busSolutionsChangeService.solutionsInit(orderSid, userSid, orgPath); + } + + @Override + public ResultBean saveAppSolutions(AppSolutionssChangeDto dto) { + return busSolutionsChangeService.saveAppSolutions(dto); + } + + @Override + public ResultBean appDetails(String sid) { + return busSolutionsChangeService.appDetails(sid); + } + + @Override + public ResultBean deleteSolution(String sid) { + return busSolutionsChangeService.deleteSolution(sid); + } + + @Override + public ResultBean submitAppSolution(AppSubmitSolutionDto dto) { + return busSolutionsChangeService.submitAppSolution(dto); + } + + +} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeService.java new file mode 100644 index 0000000000..084f01aa74 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussolutionschange/BusSolutionsChangeService.java @@ -0,0 +1,1221 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.buscenter.biz.bussolutionschange; + +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.buscenter.api.buscenterfile.BuscenterFile; +import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFileEnum; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; +import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel; +import com.yxt.anrui.buscenter.api.bussolutionschange.*; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionChangeVo; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSolutionssChangeDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.app.AppSubmitSolutionDto; +import com.yxt.anrui.buscenter.api.bussolutionschange.flow.flow.*; +import com.yxt.anrui.buscenter.biz.buscenterfile.BuscenterFileService; +import com.yxt.anrui.buscenter.biz.bussalesorder.BusSalesOrderService; +import com.yxt.anrui.buscenter.biz.bussalesordermodel.BusSalesOrderModelService; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; +import com.yxt.anrui.flowable.api.flow.FlowableFeign; +import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; +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.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.PrivilegeQuery; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; +import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign; +import com.yxt.anrui.riskcenter.api.loansolutions.SolutionDetailsDto; +import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; +import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionssDto; +import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionssVo; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.messagecenter.api.message.MessageFeign; +import com.yxt.messagecenter.api.message.MessageFlowVo; +import com.yxt.messagecenter.api.message.MessageFlowableQuery; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +/** + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class BusSolutionsChangeService extends MybatisBaseService { + + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private LoanSolutionsFeign loanSolutionsFeign; + @Autowired + private BusSalesOrderService busSalesOrderService; + @Autowired + private BusSalesOrderModelService busSalesOrderModelService; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private CrmCustomerTempFeign crmCustomerTempFeign; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private BuscenterFileService buscenterFileService; + @Autowired + private MessageFeign messageFeign; + @Autowired + private FlowFeign flowFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + + public PagerVo listPage(PagerQuery pq) { + IPage page = PagerUtil.queryToPage(pq); + BusSolutionsChangeQuery pagerQuery = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = pagerQuery.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("createBySid", pagerQuery.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + //======================= + //分公司 + if (StringUtils.isNotBlank(pagerQuery.getCompany())) { + qw.like("useOrgName", pagerQuery.getCompany()); + } + //申请部门 + if (StringUtils.isNotBlank(pagerQuery.getDept())) { + qw.like("dept", pagerQuery.getDept()); + } + //合同号 + if (StringUtils.isNotBlank(pagerQuery.getContractNo())) { + qw.like("contractNo", pagerQuery.getContractNo()); + } + //申请人 + if (StringUtils.isNotBlank(pagerQuery.getApplyName())) { + qw.like("applyName", pagerQuery.getApplyName()); + } + //车型 + if (StringUtils.isNotBlank(pagerQuery.getModel())) { + qw.like("model", pagerQuery.getModel()); + } + //客户 + if (StringUtils.isNotBlank(pagerQuery.getCustomerName())) { + qw.like("customerName", pagerQuery.getCustomerName()); + } + //产品政策 + if (StringUtils.isNotBlank(pagerQuery.getPolicyName())) { + qw.eq("policyName", pagerQuery.getPolicyName()); + } + String applyStartTime = pagerQuery.getApplyStartDate(); + String applyEndTime = pagerQuery.getApplyEndDate(); + qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')" + ); + qw.eq("isDelete", 0); + qw.orderByDesc("createTime"); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean changeInit(String salesOrderSid, String userSid, String orgPath) { + ResultBean rb = ResultBean.fireFail(); + BusSolutionsChangeDetailsVo vo = new BusSolutionsChangeDetailsVo(); + vo.setUserSid(userSid); + vo.setSalesOrderSid(salesOrderSid); + vo.setOrgPath(orgPath); + //查询金融方案 + LoanSolutions solutions = loanSolutionsFeign.getOneByOrderSid(salesOrderSid).getData(); + if (solutions != null) { + vo.setSolutionsSid(solutions.getSid()); + } + ResultBean solutionsDetailsVoResultBean = loanSolutionsFeign.selectDetailByApplySid(salesOrderSid); + if (solutionsDetailsVoResultBean.getData() != null) { + SolutionsVo solutionsVo = new SolutionsVo(); + BeanUtil.copyProperties(solutionsDetailsVoResultBean.getData(), solutionsVo); + vo.setSolutions(solutionsVo); + } + //销售订单信息 + BusSalesOrder salesOrder = busSalesOrderService.fetchBySid(salesOrderSid); + if (null != salesOrder) { + if (StringUtils.isNotBlank(salesOrder.getAffiliatedCompany())) { + vo.setAffiliatedCompany(salesOrder.getAffiliatedCompany()); + } + if (StringUtils.isNotBlank(salesOrder.getContractNo())) { + vo.setContractNo(salesOrder.getContractNo()); + } + if (StringUtils.isNotBlank(salesOrder.getCustomerName())) { + vo.setCustomerName(salesOrder.getCustomerName()); + } + if (StringUtils.isNotBlank(salesOrder.getCustomerSid())) { + CrmCustomerTempVo customerTempVo = crmCustomerTempFeign.fetchSid(salesOrder.getCustomerSid()).getData(); + if (null != customerTempVo) { + if (StringUtils.isNotBlank(customerTempVo.getMobile())) { + vo.setMobile(customerTempVo.getMobile()); + } + if (StringUtils.isNotBlank(customerTempVo.getMobile())) { + vo.setMobile(customerTempVo.getMobile()); + } + String province = ""; + String city = ""; + String county = ""; + String address = ""; + if (StringUtils.isNotBlank(customerTempVo.getProvince())) { + province = customerTempVo.getProvince(); + } + if (StringUtils.isNotBlank(customerTempVo.getCity())) { + city = customerTempVo.getCity(); + } + if (StringUtils.isNotBlank(customerTempVo.getCounty())) { + county = customerTempVo.getCounty(); + } + if (StringUtils.isNotBlank(customerTempVo.getAddress())) { + address = customerTempVo.getAddress(); + } + vo.setAddress(province + city + county + address); + } + } + } + return rb.success().setData(vo); + } + + public ResultBean details(String sid) { + ResultBean rb = ResultBean.fireFail(); + BusSolutionsChangeDetailsVo vo = new BusSolutionsChangeDetailsVo(); + BusSolutionsChange busSolutionsChange = fetchBySid(sid); + if (null != busSolutionsChange) { + BeanUtil.copyProperties(busSolutionsChange, vo); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (null != busSolutionsChange.getApplyDate()) { + vo.setApplyDate(sdf.format(busSolutionsChange.getApplyDate())); + } + if (StringUtils.isNotBlank(busSolutionsChange.getProcInstId())) { + vo.setInstanceId(busSolutionsChange.getProcInstId()); + } + if (StringUtils.isNotBlank(busSolutionsChange.getCreateBySid())) { + vo.setUserSid(busSolutionsChange.getCreateBySid()); + } + if (StringUtils.isNotBlank(busSolutionsChange.getOrgSidPath())) { + vo.setOrgPath(busSolutionsChange.getOrgSidPath()); + } + if (StringUtils.isNotBlank(busSolutionsChange.getSolutionsBusSId())) { + ResultBean solutionsDetailsVoResultBean = loanSolutionsFeign.selectDetailByApplySid(busSolutionsChange.getSolutionsBusSId()); + if (solutionsDetailsVoResultBean.getData() != null) { + SolutionsVo solutionsVo = new SolutionsVo(); + BeanUtil.copyProperties(solutionsDetailsVoResultBean.getData(), solutionsVo); + vo.setSolutions(solutionsVo); + } + } + } + List fileList = buscenterFileService.selectByLinkSid(sid, BuscenterFileEnum.JRFABG.getAttachType()); + fileList.removeAll(Collections.singleton(null)); + if (!fileList.isEmpty()) { + List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). + collect(Collectors.toList()); + vo.setFiles(files); + } + return rb.success().setData(vo); + } + + @Transactional(rollbackFor = Exception.class) + public ResultBean saveSolutions(BusSolutionsChangeDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + BusSolutionsChange entity = fetchBySid(sid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + SolutionsDto solutions = dto.getSolutions(); + if (solutions != null) { + SolutionDetailsDto solutionsDto = new SolutionDetailsDto(); + BeanUtil.copyProperties(solutions, solutionsDto, "sid"); + solutionsDto.setBusSid(sid); + solutionsDto.setShowMore(true); + ResultBean resultBean = loanSolutionsFeign.saveDtoss(solutionsDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + } + LoanSolutions data = loanSolutionsFeign.getOneByOrderSid(sid).getData(); + if (null != data) { + entity.setSolutionsAfterSid(data.getSid()); + entity.setPolicyName(data.getPolicyName()); + entity.setLoanTotal(data.getLoanTotal()); + } + //车型 + if (StringUtils.isNotBlank(dto.getSalesOrderSid())) { + BusSalesOrderModel vinModel = busSalesOrderModelService.fetchByOrderSid(dto.getSalesOrderSid()).getData(); + if (null != vinModel) { + if (StringUtils.isNotBlank(vinModel.getModelSid())) { + entity.setModelSid(vinModel.getModelSid()); + } + if (StringUtils.isNotBlank(vinModel.getModelName())) { + entity.setModel(vinModel.getModelName()); + } + } + } + baseMapper.updateById(entity); + } else { + BusSolutionsChange entity = new BusSolutionsChange(); + sid = entity.getSid(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + entity.setNodeState("待提交"); + SolutionsDto solutions = dto.getSolutions(); + entity.setCreateBySid(dto.getUserSid()); + entity.setOrgSidPath(dto.getOrgPath()); + entity.setSolutionsBusSId(sid); + ResultBean orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()); + if (orgSidByPath.getSuccess()) { + String userOrgSid = orgSidByPath.getData(); + entity.setUseOrgSid(userOrgSid); + ResultBean organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid); + if (organizationVo.getSuccess()) { + SysOrganizationVo organizationVoData = organizationVo.getData(); + if (null != organizationVoData) { + entity.setUseOrgName(organizationVoData.getName()); + } + } + } + if (solutions != null) { + SolutionDetailsDto solutionsDto = new SolutionDetailsDto(); + BeanUtil.copyProperties(solutions, solutionsDto, "sid"); + solutionsDto.setBusSid(sid); + solutionsDto.setShowMore(true); + ResultBean resultBean = loanSolutionsFeign.saveDtoss(solutionsDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + } + LoanSolutions data = loanSolutionsFeign.getOneByOrderSid(sid).getData(); + if (null != data) { + entity.setSolutionsAfterSid(data.getSid()); + entity.setPolicyName(data.getPolicyName()); + entity.setLoanTotal(data.getLoanTotal()); + } + //车型 + if (StringUtils.isNotBlank(dto.getSalesOrderSid())) { + BusSalesOrderModel vinModel = busSalesOrderModelService.fetchByOrderSid(dto.getSalesOrderSid()).getData(); + if (null != vinModel) { + if (StringUtils.isNotBlank(vinModel.getModelSid())) { + entity.setModelSid(vinModel.getModelSid()); + } + if (StringUtils.isNotBlank(vinModel.getModelName())) { + entity.setModel(vinModel.getModelName()); + } + } + } + baseMapper.insert(entity); + } + if (StringUtils.isNotBlank(sid)) { + //删除附件表中关于该linkSid的文件 + buscenterFileService.deleteByLinkSid(sid); + List files = dto.getFiles(); + if (!files.isEmpty()) { + buscenterFileService.saveAll(sid, files, BuscenterFileEnum.JRFABG.getAttachType()); + } + } + return rb.success().setData(sid); + } + + @Transactional(rollbackFor = Exception.class) + public ResultBean deleteBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + for (String sid : sids) { + BusSolutionsChange entity = fetchBySid(sid); + if (!entity.getNodeState().equals("待提交")) { + return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); + } + entity.setIsDelete(1); + baseMapper.updateById(entity); + } + return rb.success().setMsg("删除成功"); + } + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitSolutionsChangeDto dto, BusSolutionsChange busSolutionsChange) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (busSolutionsChange != null) { + String businessTaskId = busSolutionsChange.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + } + return r; + } + + /** + * 更新流程相关的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean submitRecordApplication(SubmitSolutionsChangeDto dto) { + ResultBean rb = ResultBean.fireFail(); + BusSolutionsChange busSolutionsChange = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, busSolutionsChange); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + String businessSid = ""; + //新增修改保存 + ResultBean resultBean = saveSolutions(dto); + if (resultBean.getSuccess()) { + businessSid = resultBean.getData(); + } + BusSolutionsChange entity = fetchBySid(businessSid); + String orgSidPath = ""; + if (StringUtils.isNotBlank(entity.getOrgSidPath())) { + orgSidPath = entity.getOrgSidPath(); + } else { + SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData(); + if (null != data) { + //根据staffSid获取用户的组织全路径 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid()); + if (!staffOrgResultBean.getSuccess()) { + return rb.setMsg(staffOrgResultBean.getMsg()); + } + //用户的组织全路径 + orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); + } + } + List orgPathList = Arrays.asList(orgSidPath.split("/")); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData(); + if (sysOrganization == null) { + return rb.setMsg("当前所在的组织机构不存在"); + } + if (StringUtils.isBlank(sysOrganization.getManagerSid())) { +// return rb.setMsg("当前所在的组织机构未设置主管人员"); + sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); + } + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值 + Map variables = BeanUtil.beanToMap(dto); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + appMap.put("noCalc", true); + variables.put("app", appMap); + BusSolutionsChange busSolutionsChange1 = fetchBySid(businessSid); + String msgBusinessSid = busSolutionsChange1.getSid(); + //用户的部门全路径sid + bv.setOrgSidPath(busSolutionsChange1.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); + String nextNodeUserSids_ = sysOrganization.getManagerSid(); + bv.setNextNodeUserSids(nextNodeUserSids_); + //流程定义id + bv.setModelId(ProcDefEnum.BUSSOLUTIONSCHANGE.getProDefId()); + if (r == 1) { + //流程定义id + bv.setModelId(ProcDefEnum.BUSSOLUTIONSCHANGE.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + int i = updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(msgBusinessSid); + messageFlowableQuery.setModuleName("金融方案变更"); + SysUserVo userVo = sysUserFeign.fetchBySid(busSolutionsChange1.getCreateBySid()).getData(); + if (userVo != null) { + if (StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + } + messageFlowableQuery.setMsgTitle("金融方案变更"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + BusSolutionsChange busSolutionsChange2 = fetchBySid(dto.getSid()); + bv.setTaskId(dto.getTaskId()); + bv.setTaskDefKey(busSolutionsChange2.getNodeSid()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + BusSolutionsChange busSolutionsChange = this.fetchBySid(businessSid); + if (bv.getTaskId().equals(busSolutionsChange.getTaskId())) { + bv.setOrgSidPath(busSolutionsChange.getOrgSidPath()); + //流程中的参数赋值 + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 + + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + appMap.put("noCalc", true); + variables.put("app", appMap); + bv.setFormVariables(variables); + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + BusSolutionsChange entity = fetchBySid(businessSid); + //首先将变更前的方案逻辑删除 + if (StringUtils.isNotBlank(entity.getSolutionsSid())) { + LoanSolutions loanSolutionsBefore = loanSolutionsFeign.fetchBySid(entity.getSolutionsSid()).getData(); + if (loanSolutionsBefore != null) { + loanSolutionsBefore.setIsDelete(1); + loanSolutionsFeign.updateById(loanSolutionsBefore); + } + } + //将变更后的金融方案赋值 + if (StringUtils.isNotBlank(entity.getSolutionsAfterSid())) { + LoanSolutions loanSolutionsAfter = loanSolutionsFeign.fetchBySid(entity.getSolutionsAfterSid()).getData(); + if (loanSolutionsAfter != null) { + loanSolutionsAfter.setSalesOrderSid(entity.getSalesOrderSid()); + loanSolutionsFeign.updateById(loanSolutionsAfter); + } + } + entity.setSolutionsBusSId(entity.getSalesOrderSid()); + baseMapper.updateById(entity); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + + public ResultBean revokeProcess(SolutionsChangeTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + BusSolutionsChange busSolutionsChange = fetchBySid(query.getBusinessSid()); + String businessTaskId = busSolutionsChange.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean taskReject(SolutionsChangeTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + BusSolutionsChange busSolutionsChange = fetchBySid(businessSid); + if (busSolutionsChange == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = busSolutionsChange.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (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 variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + appMap.put("noCalc", true); + variables.put("app", appMap); + //若有网关,则赋值网关中判断的字段。 + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + busSolutionsChange = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = busSolutionsChange.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(busSolutionsChange.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("金融方案变更"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); +// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) { + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + SysUserVo userVo = sysUserFeign.fetchBySid(busSolutionsChange.getCreateBySid()).getData(); + if (userVo != null) { + if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + } + } + messageFlowableQuery.setMsgTitle("金融方案变更"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean breakProcess(SolutionsChangeTaskQuery 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("请填写意见"); + } + BusSolutionsChange busSolutionsChange = fetchBySid(query.getBusinessSid()); + String businessTaskId = busSolutionsChange.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(busSolutionsChange.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean flowRecord(String procInsId) { + return flowTaskFeign.businessFlowRecord(procInsId); + } + + public ResultBean> getNextNodesForSubmit(SolutionsGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //根据业务sid查询排产信息 + BusSolutionsChange busSolutionsChange = fetchBySid(query.getBusinessSid()); + bv.setFormVariables(variables); + bv.setModelId(busSolutionsChange.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SolutionsGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getPreviousNodesForReject(SolutionsGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //根据业务sid查询排产信息 + BusSolutionsChange busSolutionsChange = fetchBySid(query.getBusinessSid()); + bv.setFormVariables(variables); + bv.setModelId(busSolutionsChange.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SolutionsGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean delegate(SolutionsChangeDelegateQuery solutionsChangeDelegateQuery) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(solutionsChangeDelegateQuery, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + //----------------------------------app--------------------------------------- + public ResultBean solutionsInit(String orderSid, String userSid, String orgPath) { + ResultBean rb = ResultBean.fireFail(); + AppSolutionChangeVo vo = new AppSolutionChangeVo(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SolutionssVo solutionssVo = loanSolutionsFeign.selectDetails2(orderSid).getData(); + if (null != solutionssVo) { + BeanUtil.copyProperties(solutionssVo, vo); + } + vo.setUserSid(userSid); + vo.setOrgPath(orgPath); + vo.setOrderSid(orderSid); + vo.setApplyDate(sdf.format(new Date())); + SysUserVo sysUserVo = sysUserFeign.fetchBySid(userSid).getData(); + if (null != sysUserVo) { + vo.setApplyName(sysUserVo.getName()); + //根据orgPath查询部门 + List orgPathsList = Arrays.asList(orgPath.split("/")); + String orgSids = orgPathsList.get(orgPathsList.size() - 1); + vo.setDeptSid(orgSids); + ResultBean organizationResultBean = sysOrganizationFeign.fetchBySid(orgSids); + if (organizationResultBean.getData() != null) { + String deptName = organizationResultBean.getData().getName(); + vo.setDept(deptName); + } + } + if (StringUtils.isNotBlank(vo.getApplyName()) && StringUtils.isNotBlank(vo.getDept())) { + vo.setPublishInfo(vo.getDept() + "-" + vo.getApplyName()); + } + //销售订单信息 + BusSalesOrder salesOrder = busSalesOrderService.fetchBySid(orderSid); + if (null != salesOrder) { + if (StringUtils.isNotBlank(salesOrder.getAffiliatedCompany())) { + vo.setAffiliatedCompany(salesOrder.getAffiliatedCompany()); + } + if (StringUtils.isNotBlank(salesOrder.getContractNo())) { + vo.setContractNo(salesOrder.getContractNo()); + } + if (StringUtils.isNotBlank(salesOrder.getCustomerName())) { + vo.setCustomerName(salesOrder.getCustomerName()); + } + if (StringUtils.isNotBlank(salesOrder.getCustomerSid())) { + CrmCustomerTempVo customerTempVo = crmCustomerTempFeign.fetchSid(salesOrder.getCustomerSid()).getData(); + if (null != customerTempVo) { + if (StringUtils.isNotBlank(customerTempVo.getMobile())) { + vo.setMobile(customerTempVo.getMobile()); + } + if (StringUtils.isNotBlank(customerTempVo.getMobile())) { + vo.setMobile(customerTempVo.getMobile()); + } + String province = ""; + String city = ""; + String county = ""; + String address = ""; + if (StringUtils.isNotBlank(customerTempVo.getProvince())) { + province = customerTempVo.getProvince(); + } + if (StringUtils.isNotBlank(customerTempVo.getCity())) { + city = customerTempVo.getCity(); + } + if (StringUtils.isNotBlank(customerTempVo.getCounty())) { + county = customerTempVo.getCounty(); + } + if (StringUtils.isNotBlank(customerTempVo.getAddress())) { + address = customerTempVo.getAddress(); + } + vo.setAddress(province + city + county + address); + } + } + } + vo.setAppendPolicySid(true); + return rb.success().setData(vo); + } + + /** + * 保存修改 + * + * @param dto + * @return + */ + @Transactional(rollbackFor = Exception.class) + public ResultBean saveAppSolutions(AppSolutionssChangeDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + BusSolutionsChange entity = fetchBySid(sid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + //金融方案业务sid + entity.setSolutionsBusSId(sid); + //销售订单sid + if (StringUtils.isNotBlank(dto.getOrderSid())) { + entity.setSalesOrderSid(dto.getOrderSid()); + //查询金融方案 + LoanSolutions solutions = loanSolutionsFeign.getOneByOrderSid(dto.getOrderSid()).getData(); + if (solutions != null) { + entity.setSolutionsSid(solutions.getSid()); + } + } + SolutionssDto solutionsDto = new SolutionssDto(); + BeanUtil.copyProperties(dto, solutionsDto); + solutionsDto.setSaleOrderSid(sid); + ResultBean resultBean = loanSolutionsFeign.save2(solutionsDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + LoanSolutions data = loanSolutionsFeign.getOneByOrderSid(sid).getData(); + if (null != data) { + entity.setSolutionsAfterSid(data.getSid()); + entity.setPolicyName(data.getPolicyName()); + entity.setLoanTotal(data.getLoanTotal()); + } + //车型 + if (StringUtils.isNotBlank(dto.getOrderSid())) { + BusSalesOrderModel vinModel = busSalesOrderModelService.fetchByOrderSid(dto.getOrderSid()).getData(); + if (null != vinModel) { + if (StringUtils.isNotBlank(vinModel.getModelSid())) { + entity.setModelSid(vinModel.getModelSid()); + } + if (StringUtils.isNotBlank(vinModel.getModelName())) { + entity.setModel(vinModel.getModelName()); + } + } + } + baseMapper.updateById(entity); + } else { + BusSolutionsChange entity = new BusSolutionsChange(); + sid = entity.getSid(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + entity.setNodeState("待提交"); + entity.setCreateBySid(dto.getUserSid()); + entity.setOrgSidPath(dto.getOrgPath()); + //金融方案业务sid + entity.setSolutionsBusSId(sid); + //销售订单sid + if (StringUtils.isNotBlank(dto.getOrderSid())) { + entity.setSalesOrderSid(dto.getOrderSid()); + //查询金融方案 + LoanSolutions solutions = loanSolutionsFeign.getOneByOrderSid(dto.getOrderSid()).getData(); + if (solutions != null) { + entity.setSolutionsSid(solutions.getSid()); + } + } + ResultBean orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()); + if (orgSidByPath.getSuccess()) { + String userOrgSid = orgSidByPath.getData(); + entity.setUseOrgSid(userOrgSid); + ResultBean organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid); + if (organizationVo.getSuccess()) { + SysOrganizationVo organizationVoData = organizationVo.getData(); + if (null != organizationVoData) { + entity.setUseOrgName(organizationVoData.getName()); + } + } + } + SolutionssDto solutionsDto = new SolutionssDto(); + BeanUtil.copyProperties(dto, solutionsDto); + solutionsDto.setSaleOrderSid(sid); + ResultBean resultBean = loanSolutionsFeign.save2(solutionsDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + LoanSolutions data = loanSolutionsFeign.getOneByOrderSid(sid).getData(); + if (null != data) { + entity.setSolutionsAfterSid(data.getSid()); + entity.setPolicyName(data.getPolicyName()); + entity.setLoanTotal(data.getLoanTotal()); + } + //车型 + if (StringUtils.isNotBlank(dto.getOrderSid())) { + BusSalesOrderModel vinModel = busSalesOrderModelService.fetchByOrderSid(dto.getOrderSid()).getData(); + if (null != vinModel) { + if (StringUtils.isNotBlank(vinModel.getModelSid())) { + entity.setModelSid(vinModel.getModelSid()); + } + if (StringUtils.isNotBlank(vinModel.getModelName())) { + entity.setModel(vinModel.getModelName()); + } + } + } + baseMapper.insert(entity); + } + if (StringUtils.isNotBlank(sid)) { + //删除附件表中关于该linkSid的文件 + buscenterFileService.deleteByLinkSid(sid); + List files = dto.getFiles(); + if (!files.isEmpty()) { + buscenterFileService.saveAll(sid, files, BuscenterFileEnum.JRFABG.getAttachType()); + } + } + return rb.success().setData(sid); + } + + public ResultBean appDetails(String sid) { + ResultBean rb = ResultBean.fireFail(); + AppSolutionChangeVo vo = new AppSolutionChangeVo(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + BusSolutionsChange entity = fetchBySid(sid); + if (entity != null) { + if (StringUtils.isNotBlank(entity.getSolutionsBusSId())) { + SolutionssVo solutionssVo = loanSolutionsFeign.selectDetails2(entity.getSolutionsBusSId()).getData(); + if (null != solutionssVo) { + BeanUtil.copyProperties(solutionssVo, vo); + } + } + if (StringUtils.isNotBlank(entity.getContractNo())) { + vo.setContractNo(entity.getContractNo()); + } + if (StringUtils.isNotBlank(entity.getCustomerName())) { + vo.setCustomerName(entity.getCustomerName()); + } + if (StringUtils.isNotBlank(entity.getCreateBySid())) { + vo.setUserSid(entity.getCreateBySid()); + } + if (StringUtils.isNotBlank(entity.getAddress())) { + vo.setAddress(entity.getAddress()); + } + if (StringUtils.isNotBlank(entity.getApplyName())) { + vo.setApplyName(entity.getApplyName()); + } + if (StringUtils.isNotBlank(entity.getOrgSidPath())) { + vo.setOrgPath(entity.getOrgSidPath()); + } + if (null != entity.getApplyDate()) { + vo.setApplyDate(sdf.format(entity.getApplyDate())); + } + if (StringUtils.isNotBlank(entity.getMobile())) { + vo.setMobile(entity.getMobile()); + } + if (StringUtils.isNotBlank(entity.getDept())) { + vo.setDept(entity.getDept()); + } + if (StringUtils.isNotBlank(entity.getDeptSid())) { + vo.setDeptSid(entity.getDeptSid()); + } + if (StringUtils.isNotBlank(entity.getSalesOrderSid())) { + vo.setOrderSid(entity.getSalesOrderSid()); + } + if (StringUtils.isNotBlank(entity.getRemarks())) { + vo.setRemarks(entity.getRemarks()); + } + if (StringUtils.isNotBlank(entity.getProcInstId())) { + vo.setProcInsId(entity.getProcInstId()); + } + if (StringUtils.isNotBlank(entity.getTaskId())) { + vo.setTaskId(entity.getTaskId()); + } + if (StringUtils.isNotBlank(vo.getApplyName()) && StringUtils.isNotBlank(vo.getDept())) { + vo.setPublishInfo(vo.getDept() + "-" + vo.getApplyName()); + } + List fileList = buscenterFileService.selectByLinkSid(sid, BuscenterFileEnum.JRFABG.getAttachType()); + fileList.removeAll(Collections.singleton(null)); + if (!fileList.isEmpty()) { + List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). + collect(Collectors.toList()); + vo.setFiles(files); + } + } + vo.setAppendPolicySid(true); + return rb.success().setData(vo); + } + + public ResultBean deleteSolution(String sid) { + ResultBean rb = ResultBean.fireFail(); + BusSolutionsChange busSolutionsChange = fetchBySid(sid); + if (!busSolutionsChange.getNodeState().equals("待提交")) { + return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); + } + busSolutionsChange.setIsDelete(1); + baseMapper.updateById(busSolutionsChange); + return rb.success().setMsg("删除成功"); + } + + //---------------app提交流程 + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(AppSubmitSolutionDto dto, BusSolutionsChange busSolutionsChange) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (busSolutionsChange != null) { + String businessTaskId = busSolutionsChange.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + } + return r; + } + + + public ResultBean submitAppSolution(AppSubmitSolutionDto dto) { + ResultBean rb = ResultBean.fireFail(); + BusSolutionsChange busSolutionsChange = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, busSolutionsChange); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + String businessSid = ""; + //新增修改保存 + ResultBean resultBean = saveAppSolutions(dto); + if (resultBean.getSuccess()) { + businessSid = resultBean.getData(); + } + BusSolutionsChange entity = fetchBySid(businessSid); + String orgSidPath = ""; + if (StringUtils.isNotBlank(entity.getOrgSidPath())) { + orgSidPath = entity.getOrgSidPath(); + } else { + SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData(); + if (null != data) { + //根据staffSid获取用户的组织全路径 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid()); + if (!staffOrgResultBean.getSuccess()) { + return rb.setMsg(staffOrgResultBean.getMsg()); + } + //用户的组织全路径 + orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); + } + } + List orgPathList = Arrays.asList(orgSidPath.split("/")); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData(); + if (sysOrganization == null) { + return rb.setMsg("当前所在的组织机构不存在"); + } + if (StringUtils.isBlank(sysOrganization.getManagerSid())) { +// return rb.setMsg("当前所在的组织机构未设置主管人员"); + sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); + } + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值 + Map variables = BeanUtil.beanToMap(dto); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + appMap.put("noCalc", true); + variables.put("app", appMap); + BusSolutionsChange busSolutionsChange1 = fetchBySid(businessSid); + String msgBusinessSid = busSolutionsChange1.getSid(); + //用户的部门全路径sid + bv.setOrgSidPath(busSolutionsChange1.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); + String nextNodeUserSids_ = sysOrganization.getManagerSid(); + bv.setNextNodeUserSids(nextNodeUserSids_); + //流程定义id + bv.setModelId(ProcDefEnum.BUSSOLUTIONSCHANGE.getProDefId()); + if (r == 1) { + //流程定义id + bv.setModelId(ProcDefEnum.BUSSOLUTIONSCHANGE.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + int i = updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(msgBusinessSid); + messageFlowableQuery.setModuleName("金融方案变更"); + SysUserVo userVo = sysUserFeign.fetchBySid(busSolutionsChange1.getCreateBySid()).getData(); + if (userVo != null) { + if (StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + } + messageFlowableQuery.setMsgTitle("金融方案变更"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + BusSolutionsChange busSolutionsChange2 = fetchBySid(dto.getSid()); + bv.setTaskId(dto.getTaskId()); + bv.setTaskDefKey(busSolutionsChange2.getNodeSid()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } +} \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java index bdbcc981ed..33394a427c 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java @@ -54,7 +54,8 @@ public enum ProcDefEnum { LOANFINPOLICYRECORDAPPLY("金融产品政策备案", "process_u45lo7qc:1:2272516"), LOANOTHERPOLICYRECORDAPPLY("其它融产品备案", "process_7pptyzfc:1:2272524"), LOANCREDITAPPEALAPPLY("信用审核申诉", "process_gygvxw8k:2:5212504"), - DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:7:5300004"), + DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:8:6070004"), +// DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:7:5300004"), LOANTEMPLATEAPPLY("定制金融方案", "process_9q5omebi:2:2685008"), LOANHOMEVISITAPPEALAPPLY("家访考察申诉", "process_8ujil3h3:1:3665004"), BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"), diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java index 83c27f1365..9faae1baf5 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java @@ -61,6 +61,7 @@ public interface LoanFinPolicyFeign { @RequestParam("userSid") String userSid, @RequestParam("isPack") String isPack, @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "policySid", required = false) String policySid, @RequestParam(value = "modelSid", required = false) String modelSid); diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/PolicyVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/PolicyVo.java index 3c3d99b945..dd2514a5e5 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/PolicyVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/PolicyVo.java @@ -45,4 +45,7 @@ public class PolicyVo implements Vo { @ApiModelProperty("单车意外险") private String vehAccidentAmount; + private String bankShortName; + private String guaranteeTypeKey; + } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeign.java index 84ef5b4911..1f4f9eba1c 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeign.java @@ -65,9 +65,29 @@ public interface LoanSolutionsFeign { @ResponseBody ResultBean> selectByOrderSid(@RequestParam("saleOrderSid") String saleOrderSid); + @ApiOperation(value = "根据销售订单sid查询金融方案") + @GetMapping("/getOneByOrderSid") + @ResponseBody + ResultBean getOneByOrderSid(@RequestParam("saleOrderSid") String saleOrderSid); + @ApiOperation("重新发起保存金融方案") @PostMapping("/saveByOrderSid") ResultBean saveByOrderSid(@RequestBody LoanSolutions loanSolutions); + + + @ApiOperation("保存金融方案") + @PostMapping("/saveDtoss") + ResultBean saveDtoss(@RequestBody SolutionDetailsDto dto); + + @ApiOperation("根据sid查询金融方案") + @GetMapping("/fetchBySid") + ResultBean fetchBySid(@RequestParam("sid") String sid); + + @ApiOperation("修改金融方案") + @PostMapping("/updateById") + ResultBean updateById(@RequestBody LoanSolutions loanSolutions); + + /* @ApiOperation("根据条件分页查询数据的列表") @PostMapping("/listPage") public ResultBean> listPage(@RequestBody PagerQuery pq); diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeignFallback.java index 817721675d..2a2903af14 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutionsFeignFallback.java @@ -63,11 +63,31 @@ public class LoanSolutionsFeignFallback implements LoanSolutionsFeign { return null; } + @Override + public ResultBean getOneByOrderSid(String saleOrderSid) { + return null; + } + @Override public ResultBean saveByOrderSid(LoanSolutions loanSolutions) { return null; } + @Override + public ResultBean saveDtoss(SolutionDetailsDto dto) { + return null; + } + + @Override + public ResultBean fetchBySid(String sid) { + return null; + } + + @Override + public ResultBean updateById(LoanSolutions loanSolutions) { + return null; + } + @Override public ResultBean calculate(CalculateQuery query) { return null; diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssQuery.java index d3b9c5289b..099d2572e2 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssQuery.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssQuery.java @@ -13,6 +13,7 @@ import lombok.Data; @Data public class SolutionssQuery implements Query { private static final long serialVersionUID = 1460628272985480484L; + private boolean appendPolicySid; @JsonProperty("isShowMore") private boolean isShowMore; @ApiModelProperty("是否打包:1是0否") diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java index 3057f5fb5b..3cf6646b00 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java @@ -17,6 +17,7 @@ import java.util.List; @Data public class SolutionssVo implements Vo { private static final long serialVersionUID = 5336776709258881912L; + private boolean appendPolicySid; @ApiModelProperty("是否显示更多") @JsonProperty("isShowMore") private boolean isShowMore; diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml index d065d44492..4254cb9882 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml @@ -124,6 +124,8 @@